给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
思路:双向指针
class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
int ans = INT_MAX;
int cnt = 0;
sort(nums.begin(), nums.end());
for(int i = 0; i < nums.size(); i++){
for(int j = i + 1, k = nums.size()-1; j< nums.size() && k >=0 && j<k;){
int tmp = nums.at(i)+nums.at(j)+nums.at(k);
if(ans > abs(tmp -target )){
ans = abs(tmp-target);
cnt = tmp;
}
if(tmp < target) j++;
else if(tmp > target)k--;
else return target;
}
}
return cnt;
}
};