双指针问题
class Solution {
public:
static bool cmp(int a,int b)
{
return a<b;
}
int threeSumClosest(vector<int>& nums, int target) {
sort(nums.begin(),nums.end(),cmp);
int i(0),n=nums.size(),re,minre=INT_MAX,tar,j,k,prei(INT_MAX),prej,ret;
while(i<n)
{
while(i<n&&prei==nums[i])
{
++i;
}
if(i==n) break;
j=i+1;
k=n-1;
while(j<k)
{
re=nums[j]+nums[k]+nums[i]-target;
if(minre>abs(re))
{
minre=abs(re);
if(!minre)
{
return target;
}
ret=re+target;
}
if(re>0)
{
--k;
}else{
++j;
}
}
prei=nums[i++];
}
return ret;
}
};