题目链接:
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;
}
};