1.它利用了一个哈希表(Map)来存储已经遍历过的元素的值和它们的索引,以便在O(1)时间内查找。这是一个非常好的实现,并且在性能上优于之前的实现
// 找出第一个匹配等于符合条件等于9的下标---打印结果[0,1]
var twoSum = function (nums, target) {
const map = new Map();
for (let i = 0, len = nums.length; i < len; i++) {
if (map.has(target - nums[i])) {
return [map.get(target - nums[i]), i];
}
map.set(nums[i], i);
}
return [];
};
console.log('w :>> ', twoSum([1, 8, 15, 0, 2, 7], 9));
2.你的函数会在找到第一个匹配的组合时就返回结果,如果数组中存在多个匹配的组合,这个函数会返回第一个匹配。如果你希望找到所有匹配的组合,你可以稍微修改函数来存储所有匹配的索引对,然后返回它们的数组,就像下面这样:
// 找出所有符合条件等于9的下标---打印结果[[0, 1], [4, 5]]
var twoSum = function (nums, target) {
const map = new Map();
const result = [];
for (let i = 0, len = nums.length; i < len; i++) {
if (map.has(target - nums[i])) {
result.push([map.get(target - nums[i]), i]);
}
map.set(nums[i], i);
}
return result;
};
console.log('w :>> ', twoSum([1, 8, 15, 0, 2, 7], 9));