// 暴力解法
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))
做算法題不一定要僅限于數(shù)組本身或其方法,擔心其他方法的效率刚盈,hash表查詢速度明顯比循環(huán)遍歷快
hash表解法:
執(zhí)行用時 | 內(nèi)存消耗 | 語言 |
---|---|---|
64 ms | 42.5 MB | JavaScript |
暴力解法:
執(zhí)行用時 | 內(nèi)存消耗 | 語言 |
---|---|---|
100 ms | 41.3 MB |