Skip to content

Latest commit

 

History

History
34 lines (32 loc) · 917 Bytes

Code16.md

File metadata and controls

34 lines (32 loc) · 917 Bytes

3Sum Closest

class Solution {
//beats 77.70%
    public int threeSumClosest(int[] nums, int target) {
        Arrays.sort(nums);
        int diff=Integer.MAX_VALUE;
        int res=0;
        for(int i=0;i<nums.length;i++){
            if(i>0&&nums[i]==nums[i-1]) continue;
            int left=i+1,right=nums.length-1;
            while(left<right){
                int subtract=nums[i]+nums[left]+nums[right]-target;
                if(Math.abs(subtract)<diff) {
                    res=nums[i]+nums[left]+nums[right];
                    diff=Math.abs(subtract);
                }
                if(subtract<0){
                    left++;
                }
                else if(subtract>0){
                    right--;
                }
                else{
                    return res;
                }
            }
        }
        return res;
   }
}