long越界我到是没想到啊,和16一样,要不是最近忙,这么简单的题根本不想浪费时间
int threeSumClosest(vector<int>& nums, int target)
{
long ret = (long)INT_MAX-(long)target>(long)target-(long)INT_MIN ? INT_MAX : INT_MIN;
sort(nums.begin(), nums.end());
for(int i=0; i<nums.size()-2; ++i)
{
int left = i+1, right = nums.size()-1;
while(left<right)
{
int sum = nums[i]+nums[left]+nums[right];
if(abs(sum-target)<abs(ret-target))
ret = sum;
if(sum<target)
++left;
else if(sum>target)
--right;
else
return target;
}
}
return ret;
}