题目链接:
https://leetcode.com/problems/3sum-closest/description/
题解:
跟上一道的3Sum的思路一样,只要稍微改下就行了,这里就不细说,不懂的直接看代码。
代码:
class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
sort(nums.begin(),nums.end());
int ans=0;
int sum=9999999;
for(int k=0;k<nums.size();k++)
{
int left=k+1,right=nums.size()-1;
int x=nums[k];
while(left<right)
{
int y=nums[left]+nums[right];
ans=x+y;
if(abs(sum-target)>abs(ans-target))
sum=ans;
if(x+y==target)
{
while (left < right && nums[left] == nums[left+ 1])
left++;
while (left < right && nums[left] == nums[right- 1])
right--;
left++;
right--;
}
else if(x+y<target)
left++;
else
right--;
}
}
if(sum==9999999)
sum=0;
printf("%d\n",sum);
return sum;
}
};