第一种暴力解法,双重循环遍历找到答案然后返回
public int[] twoSum(int[] nums, int target) {
int[] arr = new int[2];
for (int i = 0;i<nums.length;i++) {
for (int j = i+1;j<nums.length;j++) {
if (nums[i]+nums[j] == target) {
arr[0] = i;
arr[1] = j;
return arr;
}
}
}
return arr;
}
第二种可以通过Map降低时间复杂度,只要遍历一次,如果map中有与之对应的value值就返回,否则就把当前值作为key,数组下标值作为value值插入
public int[] twoSum2(int[] nums, int target) {
int[] arr = new int[2];
Map<Integer,Integer> map = new HashMap<>();
for (int i = 0;i<nums.length;i++) {
if (map.containsKey(target-nums[i])) {
arr[0] = map.get(target-nums[i]);
arr[1] = i;
return arr;
}
map.put(nums[i],i);
}
return arr;
}