两数之和 - 集合版

两数之和

此题目中,需要判断某数是否存在,且返回下标,我们可以使用 Map 来进行构造。

在遍历数组时,判断target-nums[i] 的值是否存在于map中,若在,则直接返回,不在,则把该数以及下标加入map中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer,Integer> map = new HashMap<>();
int[] res = new int[2];
if(nums == null || nums.length == 0)
return res;
for(int i=0;i<nums.length;i++){
int temp = target - nums[i];
if(map.containsKey(temp)){
res[0] = i;
res[1] = map.get(temp);
}
else{
map.put(nums[i],i);
}
}

return res;
}
}