16. 3Sum Closest

two pointers, O(n^2)

class Solution {
    public int threeSumClosest(int[] nums, int target) {
        if (nums == null || nums.length == 0) return -1;

        Arrays.sort(nums);
        int minDiff = Integer.MAX_VALUE;
        int ans = -1;
        for (int i = 0; i < nums.length - 2; i++){
            int left = i + 1, right = nums.length - 1;
            while (left < right){
                int sum = nums[i] + nums[left] + nums[right];
                int diff = Math.abs(sum - target);
                if (diff < minDiff){
                    minDiff = diff;
                    ans = sum;
                }

                if (sum < target){
                    left++;
                }
                else if (sum > target){
                    right--;
                }
                else{
                    return sum;
                }
            }
        }

        return ans;
    }
}

results for ""

    No results matching ""