1、暴力解法
依次遍历所有可能,复杂度为O(n2)
public int[] twoSum(int[] nums,int target){
for(int i=0;i<nums.length;i++){
for(int j=i+1;j<nums.length;j++){
if(nums[i]+nums[j]==target){
return new int[]{i,j};
}
}
}
return new int[0];
}
}
2、哈希遍历
我们可以使用哈希表从而将时间复杂度降低到O(N),建立一个Map对象,遍历数组,判断与当前值相加等于target的元素是否已经在map中,如果在,返回,如果不在,把当前元素和索引放入map中。
public int[] twoSum(int[] nums,int target){
Map<Integer,Integer> hashmap=new HashMap<>();
for(int i=0;i<nums.length;i++){
if(hashmap.containsKey(target-nums[i])){
return new int[]{i,hashmap.get(target-nums[i])};
}else{
hashmap.put(nums[i],i);
}
}
return new int[0];
}
}