很明显暴力的解法是两层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;
}