码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-06-23 15:25:54      阅读:116      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!