和3Sum没什么区别,记录最小gap
int threeSumClosest(vector<int> &num, int target) {
int b, c, n = num.size();
int sum = num[0] + num[1] + num[2];
sort(num.begin(), num.end());
int tmp = 0;
for(int i = 0; i < n-2; i++){
b = i+1; c = n-1;
while(b < c){
tmp = num[i] + num[b] + num[c] ;
if(tmp < target){
b++;
if(abs(target - tmp) < abs(sum - target)){
sum = tmp;
}
}
else if(tmp > target){
c--;
if(abs(target - tmp) < abs(sum - target)){
sum = tmp;
}
}
else
return target;
}
}
return sum;
}