最简单的想法就是双指针遍历,两个下标的值相加等于target就可以返回了
class Solution {
public int[]twoSum(int[] nums,int target) {
int[] res =new int[2];
for (int i =0; i < nums.length; i++) {
for (int j = i +1; j < nums.length; j++) {
if (nums[j] + nums[i] == target) {
res[0] = i;
res[1] = j;
return res;
}
}
}
return res;
}
}
还有一种方法就是用map保存下标的方式,数组的值作为key,下标的值作为value,进行查找
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer,Integer> map=new HashMap<>();
for(int i=0;i<nums.length;i++){
int temp=target-nums[i];
if(map.containsKey(temp)){
return new int[]{map.get(temp),i};
}
map.put(nums[i],i);
}
return null;
}
}