Leetcode【16】:3Sum Closest

来源:互联网 发布:苏联打阿富汗知乎 编辑:程序博客网 时间:2024/05/17 09:20

题目:和上题思路类似,但是细节稍有区别。此题要求找到3个数的和最接近一个target,并且假设只有一个结果。比如我们找到了3个数之和正好==target,就可以结束了。

class Solution {public:int threeSumClosest(vector<int> &num, int target){if(num.size()==3)return num[0]+num[1]+num[2];sort(num.begin(),num.end());//先排序。int res=100000;for(int i=0;i<num.size();++i){//两层循环int start=i+1,end=num.size()-1;while(start<end){int sum=num[start]+num[end]+num[i];int tmp=sum-target;if(abs(tmp)<abs(res-target))res=sum;//如果需要更新结果的话if(tmp>0)end--;else if(tmp<0)start++;else {res=target;break;}}if(res==target)break;//如果正好找到和==target}return res;}};


0 0