两个整数之和

描述

1.给定一个整数数组nums和一个target,求数组中是否存在两个数的和为target并返回下标,每种输入对应一组答案,并且数组中的数只用一次。

给定nums = [2, 7, 11, 15], target = 9

1.hash对应法,事件复杂O(n),空间复杂度O(1)。两个整数之和等于target,可以转化为求one = target - other。由于这里要求解对应数的下标,故构建hash表时以数组value作为hash表的key,以数组下标作为hash表的value

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public int[] twoSum(int[] nums, int target) {
if(null == nums || nums.length < 1) {
return null;
}
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
//遍历通过目标target减去nums[i]得到另一个数otherNum,判断otherNum是否存在于数组之中
int otherNum = target - nums[i];
if (map.containsKey(otherNum)) {
return new int[]{map.get(otherNum), i};
}
map.put(nums[i], i);
}
return null;
}

这个功能是摆设,看看就好~~~