题目
地址:https://leetcode.cn/problems/two-sum/
思路
通过 Map
把数组的每一项进行缓存 (key 为数组中的项,value 为索引),然后再对数组进行遍历,并计算是否存在 key
相加等于目标值
- 遍历数组,判断差值是否存在
Map
中 - 如果存在,返回对应的索引
- 如果不存在,将这一项添加到
Map
中 - 数组遍历结束,返回一个兜底的数组
[-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];
};