刚开始写了这样一个条件, 但是后来考虑,若target为负 这样不合理
if(nums[first]>=target){
return nums[first]+nums[first+1]+nums[first+2];
}
正解,是上一个问题3Sum的延续
class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
int len=nums.size(),sum=nums[0]+nums[1]+nums[2];
sort(nums.begin(),nums.end());
int min=INT_MAX;
for(int first=0;first<len-2;first++){
int second=first+1;
int third=len-1;
while(second<third){
int dif=abs(nums[first]+nums[second]+nums[third]-target);
if(dif<min){
min=dif;
sum=nums[first]+nums[second]+nums[third];
}
if(nums[first]+nums[second]+nums[third]==target){
return target;
}
else if(nums[first]+nums[second]+nums[third]>target){
third--;
}
else if(nums[first]+nums[second]+nums[third]<target){
second++;
}
}
}
return sum;
}
};