class Solution {
public:
int threeSumClosest(vector<int> &num, int target) {
int ans=0,tmp=0;
sort(num.begin(),num.end());
for (int i=0;i<num.size();i++){
int j=i+1;
int k=(int)num.size()-1;
while(j<k){
tmp=num[i]+num[j]+num[k];
if (i==0&&j==i+1&&k==(int)num.size()-1)
ans=tmp;
if(abs(tmp-target)<abs(ans-target))
ans=tmp;
if(ans==target)
return ans;
if(tmp>target)k--;
else j++;
}
}
return ans;
}
};
遍历起点另外两个数一个取最小的另一个取最大的然后根据三个数的和和target的关系判断应该变大还是变小。