博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Leetcode]3Sum
阅读量:4679 次
发布时间:2019-06-09

本文共 1264 字,大约阅读时间需要 4 分钟。

转载:http://blog.csdn.net/xshalk/article/details/8148422

思路: 1.将数组排序,

          2.a 遍历 数组a[0]....a[n-1];         

          3.当 a=a[i]  时   后面的问题 就是 :  a[i+1] 到 a[n-1]中  b+c =-a  (编程之美 2.12 快速寻找满足条件的两个数  )      

                       记 b=a[j]=a[i-1]     c=a[k]=a[n-1]   

   若 b+c  < -a ,j++; 

b+c > -a  ,j--;    

b+c=-a 记录下来,并j++;

  4.还有一个问题 就是unique triplet,   所以 a=a[i] 要判断是否和a[i-1]相等,若相等,子问题已经解答。

                                                                              也要判断 b和c  是否和之前的相同,若相同,就已经判断过了。

 

       罗嗦这么多,直接上代码:

class Solution {public:    vector
> threeSum(vector
&num) { // Start typing your C/C++ solution below // DO NOT write int main() function vector
> ret; ret.clear(); sort(num.begin(),num.end()); for(int i=0; i!=num.size();i++){ if(i > 0 && num[i]==num[i-1]) continue; int j,k; j=i+1; k=num.size()-1; while(j
i+1&&num[j]==num[j-1]){ j++; continue; } if(k
0){ k--; }else if(sum<0){ j++; }else{ vector
tmp; tmp.push_back(num[i]); tmp.push_back(num[j]); tmp.push_back(num[k]); ret.push_back(tmp); j++; } } } return ret; }};

 

转载于:https://www.cnblogs.com/lihaozy/archive/2013/01/23/2872427.html

你可能感兴趣的文章
Servlet监听器统计在线人数
查看>>
关于手机端IOS系统微信中虚拟键盘遮挡input输入框问题的解决方案 草稿
查看>>
Python--小功能应用
查看>>
[linux-内核][转]内核日志及printk结构浅析
查看>>
程序猿的爱情-2012-01-22
查看>>
CentOS7.2 安装iptables
查看>>
网络是怎样连接的—1.浏览器生成消息
查看>>
codevs1430 素数判定
查看>>
2017年6月2号课堂笔记
查看>>
poj1015【DP.......无奈了】
查看>>
C#性能优化的一些技巧
查看>>
ios坐标位置转换
查看>>
C#中常用到的时间函数(天数差、星期几等)
查看>>
如何理解一台服务器可以绑定多个ip,一个ip可以绑定多个域名
查看>>
改进delphi中的RoundTo函数
查看>>
Microsoft Visual SourceSafe使用经验
查看>>
威尔逊定理及证明
查看>>
[LeetCode] Peeking Iterator
查看>>
Understanding Unix/Linux Programming-用户程序play_again4.c
查看>>
算法总结
查看>>