快排+双指针
class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
int len = nums.size();
sort(nums.begin(),nums.end());
int res=1;
int minn=0xFFFF;
for(int i=0;i<len-2;i++)
{
int L=i+1;
int R=len-1;
while(L<R)
{
if(nums[i]+nums[L]+nums[R]==target)
{
return target;
}
else if(abs(target-(nums[i]+nums[L]+nums[R]))<minn)
{
res=nums[i]+nums[L]+nums[R];
minn=abs(target-(nums[i]+nums[L]+nums[R]));
}
if(target-(nums[i]+nums[L]+nums[R])<0)
R--;
else
L++;
}
}
return res;
}
};