<16>——3Sum Closest

来源:互联网 发布:免费网络硬盘哪个好 编辑:程序博客网 时间:2024/06/16 10:56

16、3Sum Closest

最接近的三数之和

给一个包含 n 个整数的数组 S, 找到和与给定整数 target 最接近的三元组,返回这三个数的和。

 注意事项

只需要返回三元组之和,无需返回三元组本身

样例

例如 S = [-1, 2, 1, -4] and target = 1. 和最接近 1 的三元组是 -1 + 2 + 1 = 2.

代码:

class Solution {public:    int threeSumClosest(vector<int>& nums, int target) {        int N=nums.size();        sort(nums.begin(), nums.end());        int res=nums[0]+nums[1]+nums[2];        for(int i=0;i<N-2;i++)        {            int left=i+1,right=N-1;            while(left<right)            {                int sum=nums[i]+nums[left]+nums[right];                if(abs(sum-target)<abs(res-target)) res=sum;                else if(sum<target)left++;                else right--;                if(res==target)return res;            }        }        return res;    }};


原创粉丝点击