题目来源:https://leetcode.cn/problems/3sum-closest/description/
C++解题思路:先排序,再两端往里找最接近target的和
解题思路跟这个有点像:力扣 15. 三数之和_江湖人称贺行风的博客-CSDN博客
class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
int sumof = 0, len = nums.size();
int ii,jj,kk,iii,jjj, temsum;
sort(nums.begin(),nums.end());//排序
sumof = nums[0] + nums[1] + nums[2];
for(ii = 0; ii < len-2; ii++){
for(jj = len-1; jj > ii+1; jj--){
iii = ii; jjj = jj;
kk = floor((iii+jjj)/2);
while(iii<jjj-1){
temsum = nums[ii] + nums[jj] + nums[kk];
if(abs(temsum-target)<abs(sumof-target)) sumof = temsum;
if(nums[ii] + nums[jj] + nums[kk] == target) return target;
else if(nums[ii] + nums[jj] + nums[kk] < target){
iii = kk;
kk = floor((iii + jjj)/2);
}
else{
jjj = kk;
kk = floor((iii + jjj)/2);
}
}
if(nums[jj] == nums[jj-1]) jj--;
}
if(nums[ii] == nums[ii+1]) ii++;
}
return sumof;
}
};