class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
int n=nums.size();
int closest=nums[0]+nums[1]+nums[2];
sort(nums.begin(),nums.end());
for(int p=0;p<n-2;++p){
if(p>0&&nums[p]==nums[p-1]) continue;
int left=p+1;
int right=n-1;
while(left<right){
int m=nums[left]+nums[p]+nums[right];
if(abs(closest-target)>abs(m-target)){
closest=m;
}
if(m==target){
return target;
}else if(m<target){
left++;
while(left<right&&nums[left]==nums[left-1]){
left++;
}
}else{
right--;
while(left<right&&nums[right]==nums[right+1]){
right--;
}
}
}
}
return closest;
}
};
16 3Sum Closest
三数之和最接近目标值
最新推荐文章于 2020-12-22 11:12:17 发布
本文介绍了一个解决三数之和最接近目标值问题的C++算法实现。通过排序和双指针技巧,有效地寻找数组中三个整数相加最接近给定目标值的组合。该算法能够避免重复解并确保找到最优解。
168

被折叠的 条评论
为什么被折叠?



