给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。

示例:

输入:nums = [-1,2,1,-4], target = 1
输出:2
解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2)
class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
sort(nums.begin(),nums.end());
// nums.erase(unique(nums.begin(),nums.end()),nums.end());
if(nums.size()<3)
return 0;
int a=10*10*10+1;
int b=10*10*10+1;
int c=10*10*10+1;
int sum=0;
int distance=abs(nums[0]+nums[1]+nums[2]-target);
cout<<"distance"<<distance<<endl;
int res=nums[0]+nums[1]+nums[2];
vector<int>diff_vec;
for(int i=0;i<nums.size();i++)
{
a=nums[i];
for(int j=i+1;j<nums.size();j++)
{
b=nums[j];
for(int k=j+1;k<nums.size();k++)
{
c=nums[k];

// cout<<a<<" "<<b<<" "<<c<<endl;
sum=a+b+c;
if(abs(sum-target)<=distance)
{
res=sum;
distance=abs(sum-target);
}
}
}
}
return res;
}

};

最接近的三数之和_算法