两数之和

2022-05-14  本文已影响0人  离陌夕
// 暴力解法
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
上一篇 下一篇

猜你喜欢

热点阅读