题目
https://leetcode-cn.com/problems/two-sum/
方法
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
* 创建媒介所(字典表Map)
遍历数组,匹配符合信息的目标值 taget - currentValue
匹配成功返回两个数值下标
匹配失败就将选手的信息放入媒介所
*/
var twoSum = function(nums, target) {
if(!nums) return [];
// 创建字典表
const m = new Map();
// 遍历nums数组
for(let i = 0; i < nums.length; i++){
// 获取当前值
const n = nums[i];
// 获取对当前与该值匹配的数值
const n2 = target - nums[i];
// 判断目标值是否在字典中
if(m.has(n2)){
// 是,在返回目标值的坐标和当前数值的坐标,如果有多个数的话,这里可以不用return,存到一个二维数组或者打印出来
return [m.get(n2),i]
}
// 不在字典中,则放入字典,key为数值,value为下标
m.set(n,i)
}
};
