和3Sum相似,只是要加个变量记录和target最近相差多少(变量close),最后close+target为所求
int threeSumClosest(vector<int> &num, int target) {
int n = num.size();
if (n < 3) return 0;
sort(num.begin(), num.end());
int close = num[0] + num[1] + num[2] - target;
for (int i = 0; i < n - 2; i++)
{
int l = i + 1, r = n - 1;
while (l < r)
{
int sum = num[i] + num[l] + num[r];
if (abs(sum - target) < abs(close))
close = sum - target;
if (sum < target)
l++;
else
r--;
}
}
return close + target;
}