很明显暴力的解法是两层for循环查找,时间复杂度是O(n^2)。这里使用map集合来实现。
由此我们知道:
两数之和使用的是map,三数和四数之和使用的是双指针方法降低一层循环。
public int[] twoSum(int[] nums, int target) {
int[] res = new int[2];
if(nums == null || nums.length == 0){
return res;
}
Map<Integer, Integer> map = new HashMap<>();
for(int i = 0; i < nums.length; i++){
int temp = target - nums[i];
if(map.containsKey(temp)){
res[1] = i;
res[0] = map.get(temp);
}
map.put(nums[i], i);
}
return res;
}

京公网安备 11010502036488号