采用C++暴力求解方法,与三数之和不同的是,不需要进行排序,也不需要去重。(非正确答案,只是提供一下暴力求解的原理)
class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
int len=nums.size();
int distance;//存储数组和与目标值之差
int min;//预设最小值
int target0;//目标和
if(len<=2) return 0;//数组元素小于3,退出
min=abs(nums[1]+nums[2]+nums[3]-target);
sort(nums.begin(),nums.end());//排序
int m=0;
int i,j,k,sum;
for( i=0;i<nums.size()-2;i++){
for( j=i+1;j<nums.size()-1;j++){
for( k=j+1;k<nums.size();k++){
sum=nums[i]+nums[j]+nums[k];
distance=abs(sum-target);
if(distance<min){
min=distance;
target0=sum;
}
}
}
}
return target0;
}
};