题目:(两数之和)
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
答案:
var twoSum = function(nums, target) {
let map = {};//key数字 value下标
let loop = 0;//循环次数
let dis;//目标与当前值的差
while(loop < nums.length){
dis = target - nums[loop];
if(map[dis] != undefined){
return [map[dis], loop];
}
map[nums[loop]] = loop;
loop++;
}
return;
};
解题思路:
var twoSum = function(nums, target) {
let map = {}; //{value: key}
let loop = 0; //循环次数 也是当前下标
let dis;//目标与当前值的差
while(loop < nums.length){
//得到另外一个数
dis = target - nums[loop];
//map中是否有该数 有返回该数在nums内的下标
if(map[dis] != undefined){
return [map[dis], loop];
}
//将该数及其下标添加到map中以便于下次查找
map[nums[loop]] = loop; //为啥这行不放在if前面呢:因为放在后面就避免了同一个元素使用两遍这种情况
loop++;
}
return; //查询到一个结果后直接终止循环
};