首页 > 其他 > 详细

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

时间:2015-06-23 15:24:16      阅读:228      评论:0      收藏:0      [点我收藏+]

题目意思:给一个数组,给一个target,找三个数的和,这个和要与target距离最近,输出这个和

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

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

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

 1 class Solution {
 2 public:
 3     int threeSumClosest(vector<int>& nums, int target) {
 4         int size=nums.size();
 5         if(size<3)return 0;
 6         int j,k;
 7         int distance,temp,answer;
 8         sort(nums.begin(),nums.end());
 9         distance=abs(nums[0]+nums[1]+nums[2]-target);
10         for(int i=0;i<size-2;++i){
11             j=i+1;
12             k=size-1;
13             while(j<k){
14                 temp=nums[i]+nums[j]+nums[k];
15                 if(distance>=abs(temp-target)){    //加等号,是解决nums长度为3的情况
16                     distance=abs(temp-target);
17                     answer=temp;
18                 }
19                 if(temp-target>0)k--;
20                 else if(temp-target<0)j++;
21                 else return target;
22             }
23         }
24         return answer;
25     }
26 };

 

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

原文:http://www.cnblogs.com/smallby/p/4595410.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!