LeetCode 题解:1. 两数之和,JavaScript,HashMap 单词遍历,详细注释
原题链接:https://leetcode-cn.com/problems/two-sum/
解题思路:
遍历数组,每次保存target - nums[index]和index。
下次遍历时,如果在Map中找到了target - nums[index],就表示找到了两个数的和为target。
此时可以直接从Map中取出保存的index,与当前值的index组合则为结果。
```javascript []
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function (nums, target) {
// 用Map保存已遍历的index结果
let map = new Map();
for (let index = 0; index < nums.length; index++) {
// 判断当前值是否已在Map中存储,如果有就表示找到了两个数可以想加等于target
if (typeof map.get(nums[index]) === 'number') {
// 返回已保存的index和当前值的index
return [map.get(nums[index]), index];
}
// 将当前值与target的差,以及当前值的index保持在Map
// 当遍历到target - nums[index],就表示找到了两数之和为target,可以直接把当前的index取出
map.set(target - nums[index], index);
}
};
```
版权声明: 本文为 InfoQ 作者【Lee Chen】的原创文章。
原文链接:【http://xie.infoq.cn/article/9f28160e28c2161ff754260e4】。文章转载请联系作者。
评论