题目要求
解题思路
这道题解题方法和三数之和解题思路一样,可以参考上一篇博客
代码实现
class Solution
{
public:
int threeSumClosest(vector<int>& nums, int target)
{
//排序
sort(nums.begin(),nums.end());
int len=nums.size();
//固定一个,利用双指针解决
int cur=0;
long sum=INT_MAX;
while(cur<len)
{
int left=cur+1,right=len-1;
while(left<right)
{
if(nums[cur]+nums[left]+nums[right]==target) return target;
else if(nums[cur]+nums[left]+nums[right]>target)
{
if(abs(sum-target)>nums[cur]+nums[left]+nums[right]-target) sum=nums[cur]+nums[left]+nums[right];
right--;
}
else
{
if(abs(sum-target)>target-nums[cur]-nums[left]-nums[right]) sum=nums[cur]+nums[left]+nums[right];
left++;
}
}
cur++;
}
return sum;
}
};