链接:https://oj.leetcode.com/problems/3sum-closest/
题意:在数组中求出3个数sum和最接近target 时,sum为返回值
1.和上道题思路类似
2.比较的时候注意用绝对值abs
代码:
<pre name="code" class="cpp">class Solution {
public:
int threeSumClosest(vector<int> &num, int target) {
sort(num.begin(),num.end());
int result = 10000;
int tmp1,tmp2;
if(num.size()<3)
return 0;
for(int i = 0;i < num.size();i++){
if(i!=0 && num[i] ==num[i-1]) continue;
int j = i + 1, k = num.size()-1;
int sum;
while(j < k){
sum = num[i] + num[j] + num[k];
tmp1 = abs(target - sum);
tmp2 = abs(target - result);
if( tmp1 < tmp2) result = sum;
if(sum < target) j++;
else k--;
}
}
return result;
}
};