经典的two sum, 梦开始的地方.

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

这个没什么好说的, 唯一需要注意的是这里是返回下标而不是这一对儿的值.
时间复杂度: O(n)
空间复杂度: O(n)
n是数组的长度