要解决的问题?
接收 nums = [2, 7, 11, 15], target = 9 => nums[0] + nums[1] = 2 + 7 = 9
返回 [0, 1]
注:只会有一个答案
思路
- 要得到的是两个“互补”数字,相加等于target。
- 操作数组时将当前数字和索引作为map的键和值,快速定位“互补”数字位置。
- 遍历数组检查当前数的“互补”数在map中是否存在,如果存在则返回值和当前元素索引,如果不存在则存入当前数为键当前索引为值。
代码
var twoSum = function (nums, target) {
let obj = {};
for (var i = 0; i < nums.length; i++) {
if (obj[target - nums[i]] !== undefined) {
return [obj[target - nums[i]], i];
}
obj[nums[i]] = i;
}
};