// 暴力解法
function twoSum(nums, target) {
for (let i = 0, len = nums.length; i < len - 1; i++) {
for (let j = i + 1; j < len; j++) {
if (nums[j] === target - nums[i]) {
return [i, j]
}
}
}
return []
}
console.log(twoSum([2,5,5,11], 10))
// 哈希表解法
function twoSum2(nums, target) {
let map = new Map()
map.set(nums[0], 0)
for (let i = 1, len = nums.length; i < len; i++) {
if (map.has(target - nums[i])) {
return [map.get(target - nums[i]), i]
}
map.set(nums[i], i)
}
throw new Error('no result')
}
console.log(twoSum2([2,5,5,11], 10))
做算法题不一定要仅限于数组本身或其方法,担心其他方法的效率,hash表查询速度明显比循环遍历快
hash表解法:
执行用时 | 内存消耗 | 语言 |
---|---|---|
64 ms | 42.5 MB | JavaScript |
暴力解法:
执行用时 | 内存消耗 | 语言 |
---|---|---|
100 ms | 41.3 MB |
网友评论