LeetCode-第十六题:3Sum Closest

题目

题目

源码

public class Solution 
{
    public int threeSumClosest(int[] nums, int target) 
    {
        Arrays.sort(nums);
        int result=nums[0]+nums[1]+nums[2];
        int dis=result-target;
        int len=nums.length;
        for(int i=0;i<len-2;i++)
        {

            if(i>0 && nums[i]==nums[i-1])
            {
                continue;
            }
            int j=i+1;int m=len-1;
            int goal=target-nums[i];
            while(j<m)
            {
                if(Math.abs(dis)>Math.abs(nums[j]+nums[m]-goal))
                {
                    dis=nums[j]+nums[m]-goal;
                    result=nums[i]+nums[j]+nums[m];
                }
                if(nums[j]+nums[m]==goal)
                {
                    return target;
                }
                else if(nums[j]+nums[m]<goal)
                {
                    j++;
                    while (j<m && nums[j]==nums[j-1])
                    {
                        j++;
                    }
                }
                else
                {
                    m--;
                    while (j<m && nums[m]==nums[m+1])
                    {
                        m--;
                    }
                }
            }
        }
        return result;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容