您的位置:首页 > 其它

16 3Sum Closest(输出距离target最近的三个数的和Medium)

2015-06-23 14:34 281 查看
题目意思:给一个数组,给一个target,找三个数的和,这个和要与target距离最近,输出这个和

思路:这个题比3sum要稍微简单一点,如果需要优化,也可以去重,不过因为结果唯一,我没有去重。

   min abs(flag=num[i]+num[j]+num[k]-target),判断条件稍微调整,就是flag>0,则k--

   flag<0,则j++,flag=0,则返回target

class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
int size=nums.size();
if(size<3)return 0;
int j,k;
int distance,temp,answer;
sort(nums.begin(),nums.end());
distance=abs(nums[0]+nums[1]+nums[2]-target);
for(int i=0;i<size-2;++i){
j=i+1;
k=size-1;
while(j<k){
temp=nums[i]+nums[j]+nums[k];
if(distance>=abs(temp-target)){    //加等号,是解决nums长度为3的情况
distance=abs(temp-target);
answer=temp;
}
if(temp-target>0)k--;
else if(temp-target<0)j++;
else return target;
}
}
return answer;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: