16. 3Sum Closest

来源:互联网 发布:网络摄像头修改ip 编辑:程序博客网 时间:2024/06/04 19:57

枚举+二分搜索

class Solution {public:    int threeSumClosest(vector<int>& nums, int target) {        int n=nums.size();        int i,j,k;        int ans=nums[0]+nums[1]+nums[2];        sort(nums.begin(),nums.end());                for(i=0;i<=n-3;i++)        {            if(i>0&&nums[i]==nums[i-1])                continue;            for(j=i+1,k=n-1;j<k;)            {                if(j>i+1&&nums[j]==nums[j-1])                {                    j++;                    continue;                }                if(k<n-1&&nums[k]==nums[k+1])                {                    k--;                    continue;                }                int d=nums[i]+nums[j]+nums[k];                if(d==target)                    return d;                else if(d>target)                    k--;                else                    j++;                if(abs(d-target)<abs(ans-target))                    ans=d;            }        }        return ans;    }};


0 0