方法一:
暴力遍历,用二重循环判断当前值的和,直到找到目标。
public int[] twoSum(int[] nums, int target) {
int n = nums.length;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (nums[i] + nums[j] == target) {
return new int[] {i, j};
}
}
}
return new int[0];
}
方法二:
创建一个map,键为当前数,值为下标,那么在循环遍历时,只需要找map有没有是target - 当前数的键,若有,说明当前数+map的这个键=target。
否则将自己加入map。
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> res = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
if (res.containsKey(target - nums[i])) {
return new int[] {res.get(target - nums[i]), i};
}
res.put(nums[i], i);
}
return new int[0];
}