解题答案不一,一个题有多种解法,我写的只是参考而已
两数之和
/**
* @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 temp = target - nums[i];
if (map.has(temp)) {
return [nums.indexOf(temp), i]
} else {
map.set(nums[i], i)
}
}
};
解题思路:
- 首先创建一个空的map实例(因为map保存的值没有重复的,此题我们只需去找到第一 个符合条件的,所以使用了map)
- 我们编辑每一个数组元素,并且计算出另一个数字是多少:const temp = target - nums[i];
- 接着我们去用temp的值去找map中 是不是存在这个元素,有就return 并返回当前下标,因为刚一开始map是没有值的,所以当map.has 成立的时候说,第一个元素是map中存在的数字,第二个即是当前元素 结果: [nums.indexOf(temp), i]