两数之和

120 阅读1分钟

先来看看Leetcode的题目:image.png
nums = [2,7,11,15] 目标数组
target = 9 两数之和

解题思路:

1.创建一个map
2.循环遍历nums数组
3.用target减去数组中的每一项,也就是nums[i],用于计算哪个数字跟当前数字相加等于target
4.检查map里面有没有这个数,有则返回结果,如果没有则把nums[i]当作key,i当作value放进map里面,
这里为什么会使用nums[i]去作为key,而i当作value呢?
因为我们这里使用的是map,map中有一个方法has()用于检查元素是否存在,但是检查的是key,具体请查看MDN文档详解!!!

实现代码:

var twoSum = function(nums, target) {
  const map = new Map();
  for (let i = 0; i < nums.length; i++) {
    const complement = target - nums[i];
    if (map.has(complement)) {
      return [map.get(complement), i]
    } else {
      map.set(nums[i], i)
    }
  }
  return []
};