题目

地址:https://leetcode.cn/problems/two-sum/

思路

通过 Map 把数组的每一项进行缓存 (key 为数组中的项,value 为索引),然后再对数组进行遍历,并计算是否存在 key 相加等于目标值

  1. 遍历数组,判断差值是否存在 Map
  2. 如果存在,返回对应的索引
  3. 如果不存在,将这一项添加到 Map
  4. 数组遍历结束,返回一个兜底的数组 [-1, -1]
/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function (nums, target) {
  const map = new Map();
  for (let i = 0; i < nums.length; i++) {
    const item = nums[i];
    const different = target - item;
    if (map.get(different) !== undefined) {
      return [map.get(different), i];
    } else {
      map.set(item, i);
    }
  }
  return [-1, -1];
};