题1:两数之和

71 阅读1分钟

题1:两数之和

示例1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]

示例2:

输入:nums = [3,2,4], target = 6
输出:[1,2]

解题思路:

  • 创建一个map

  • for循环遍历nums数组

  • 用target减nums[i](用来计算那个数字能跟减去的数字相加得到target)

  • 检查map里有没有这个数,如果有则返回结果,如果没有则把num[i]当作key,i当作value放入map中。

    **这样放的好处:**map.has()检查的key,把数字当key,也就是实际的value。

图解:

Snipaste_2021-07-12_14-32-15.jpg

具体代码:

 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 []
    };

补充知识点:

1、map():

  • Map是JavaScript中的数据结构,它允许存储[键,值]对,其中任何值都可以用作键或值。
  • Map集合中的键和值可以是任何类型,并且如果使用集合中已存在的键将值添加到Map集合中,则新值将替换旧值。
  • 映射对象中元素的迭代按插入顺序完成,并且“for…”循环为每次迭代返回所有[键,值]对的数组。

2、map.has():用于检查Map中是否存在具有指定键的元素。

3、map.get():获取指定key对应的value

4、map.set():

  • set()方法Map 对象添加或更新一个指定了键(key)和值(value)的(新)键值对。

  • **语法:**myMap.set(key, value);

  • 参数:

    key

    要添加至相应 Map 对象的元素的键。

    value

    要添加至相应 Map 对象的元素的值。

  • 示例:

var myMap = new Map();

// 将一个新元素添加到 Map 对象
myMap.set("bar", "foo");
myMap.set(1, "foobar");

// 在Map对象中更新某个元素的值
myMap.set("bar", "baz");