给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

1
2
3
4
/*
解题思路:遍历整个数组,每遍历到一个数,就将他与目标值的差值以及索引缓存起来,
直到后续数中存在有差值集合中的任意一项,返回结果
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var twoSum = function (nums,target){
const obj = {}
const length = nums.length
for(let i = 0; i < length;i++){
const num = nums[i]
if(num in obj){
return [obj[num],i]
}else{
obj[target - num] = i
}
}
}
// 或者可以使用map
var twoSum = function (nums,target){
const map = new Map()
const length = nums.length
for(let i = 0; i < length;i++){
if(map.has(nums[i])){
return [map.get(nums[i]),i]
}else{
map.set(target-nums[i],i)
}
}
}