您的位置:首页 > 其它

leetcode:3Sum Closest

2014-03-05 22:21 363 查看
跟3sum一样,记录绝对查值最小的值就行,

定位i,j=i+1,k=n-1, tmp为三个数之和

如果比target大,k--

如果比target小,j++

public class Solution {

    public int threeSumClosest(int[] num, int target) {

       int i,j,k;

        int tmp,close;

        int n=num.length;

        Arrays.sort(num);

        close=num[0]+num[1]+num[2];

        for(i=0;i<n-2;i++)

        {

            j=i+1;k=n-1;

            

            if(Math.abs(num[i]+num[j]+num[k]-target)<Math.abs(target-close))

                close=num[i]+num[j]+num[k];

            //System.out.println(close+" "+i+" "+j+" "+k);

            while(j<k)

            {

            tmp=num[i]+num[j]+num[k];

            if(Math.abs(tmp-target)<Math.abs(close-target))

            close=tmp;

            //System.out.println(close+" "+num[i]+" "+num[j]+" "+num[k]);

                if(tmp==target)

                    return target;

                else if(tmp>target)

                    k--;                 

                else

                    j++;     

            }

            

        }

        return close;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode