题目:给定一个数组a[n]和目标值target,找出三个值相加与target之差绝对值最小的值。
思路:先排序,然后就是暴力搜索遍历所有三个值
class Solution {
public:
int threeSumClosest(vector<int> &num, int target) {
int min=10000;
int result;
int length=num.size();
sort(num.begin(),num.end());
int val=num[0]+num[1]+num[2];
int val2=num[length-1]+num[length-2]+num[length-3];
if(val>=target)return val;
if(val2<=target)return val2;
for(int i=0;i<=length-3;i++){
int j,k;
j=i+1;
k=length-1;
while(j<k){
int sum=num[i]+num[j]+num[k];
if(abs(target-sum)<min){
min=abs(target-sum);
result=sum;
}
if(sum>target){
k--;
}
else if(sum<target){
j++;
}
else{
return target;
}
}
}
return result;
}
};