5/31/2014

73. 3Sum Closest

public class Solution {
    public int threeSumClosest(int[] num, int target) {
        if (num.length==3) return num[0]+num[1]+num[2];
       
        int res = num[0]+num[1]+num[2];
        int min = Integer.MAX_VALUE;
        int i, j, p;
       
        Arrays.sort(num);
     
        for (i=0; i<num.length-2; i++) {
            j = i+1;
            p = num.length-1;
         
            while (j<p) {
                int temp = num[i]+num[j]+num[p];
             
                if (temp==target) return target;
                else if (Math.abs(temp-target)<min) {
                    min = Math.abs(temp-target);
                    res = temp;
                }
               
                if (temp<target) j++;
                else p--;
            }
        }
     
        return res;
    }
}

没有评论:

发表评论