地址
https://leetcode-cn.com/problems/3sum-closest/submissions/
描述
思想
代码
class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
//res.first存储与target的距离,second存储三数之和
pair<int,int> res={
INT_MAX,INT_MIN};
sort(nums.begin(),nums.end());
for(int i=0;i<nums.size();i++){
for(int j=i+1,k=nums.size()-1;j<k;j++){
//寻找>=target 的最小数
while(k-1>j&&nums[i]+nums[j]+nums[k-1]>=target) k--;
int sum=nums[i]+nums[j]+nums[k];
res=min(res,make_pair(abs(sum-target),sum));
//寻找<target 的最大数,
if(k-1!=j){
sum=nums[i]+nums[j]+nums[k-1];
res=min(res,make_pair(abs(sum-target),sum));
}
}
}
return res.second;
}
};