【leetcode】3Sum
2013-10-08 01:39
239 查看
class Solution { public: vector<vector<int> > threeSum(vector<int> &num) { // Note: The Solution object is instantiated only once and is reused by each test case. vector<vector<int> >ans; if(num.size()<=2) return ans; sort(num.begin(),num.end());//sort,O(n*logn) for(int i=0;i<=num.size()-3;i++)//O(n*n) { if(i>=1&&num[i]==num[i-1])//去重 continue; int sta=i+1,end=num.size()-1; while(sta<end)//O(n)确定了一个a后,看后面可否出两个b、c,使得b+c=-a { int sum=num[sta]+num[end]; if(sum==-num[i]) { vector<int> vec; vec.push_back(num[i]); vec.push_back(num[sta]); vec.push_back(num[end]); ans.push_back(vec); int oldSta=num[sta]; while(sta<=num.size()-2&&num[sta]==oldSta)//去重,刚用上的num[sta]不可再用了 sta++; } else if(sum<-num[i]) sta++; else end--; } } return ans; } };
相关文章推荐
- 在旋转后的排序数组中进行查找
- void及void指针含义的深刻解析
- [ios前端开发笔记]使用scrollView进行分页
- 一个string类的几个函数
- 大心得。。。
- js比较运算符==与===的区别
- C++测试小记(1)——array1d(int n, T val=T()) vs array1d(int n, T val=T(0))
- 经典JS序幕
- 7-11
- 人性文化的底层
- javascript实现动态表格的换行变色
- How to find duplicate rows with SQL
- 经典JS-序列号
- 孤儿进程和僵尸进程[详解]
- OpenCV绘图之多边形函数cvFillPoly,cvPolyLine,cvFillConvexPoly
- strcpy和memcpy的区别
- 论坛的管理怎么管
- Android SAX 解析
- 7-9
- 7-8