题目链接:https://leetcode-cn.com/problems/3sum-closest/
题目如下:
class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
//排序,双指针找到最接近的值
//注:为防止超限,用long型
long closest=INT_MAX;
sort(nums.begin(),nums.end());//从小到大
for(int i=0;i<nums.size();i++){
int left=i+1,right=nums.size()-1;
while(left<right){
long sum=nums[i]+nums[left]+nums[right];
if(labs(sum-target)<labs(closest-target)){//abs为取整数,fabs为取双精度,labs为取长整型
closest=sum;
}
if(sum>target) right--;
else if(sum<target) left++;
else return sum;//sum==target
}
}
return closest;
}
};