两数之和

// 暴力解法
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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,...
    sagfugetabf阅读 193评论 0 1
  • ```''' Day 8 打卡题:两数之和 首先看下题目描述: 给定一个整数数组 nums 和一个目标值 targ...
    快乐的老周阅读 96评论 0 0
  • Python 方法一:用 Python 中 list 的相关函数求解num2 = target - num1,是否...
    清水离奚阅读 181评论 0 0
  • 题目信息 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并...
    dragonMen阅读 204评论 0 1
  • 01-两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整...
    安忆VIP阅读 248评论 0 0