leetcode:3Sum
来源:互联网 发布:物流单号查询软件 编辑:程序博客网 时间:2024/06/12 22:13
求一个队列中三个之和为0的子列,并以非递减的顺序输出。思路如下:
step1: 枚举每个num[i],i=0--n;
step2:设置j=i+1,k=n-1;依次判断num[i]+num[j]+num[k]=0?并根据其和与0的大小关系对j和k做调整;
step3:为避免重复,必须对每个num[i],num[j],num[k]做判断,看它们是否与其前面的整数相等,若相等则直接跳过。
具体代码如下:
class Solution {public: vector<vector<int> > threeSum(vector<int> &num) { vector<vector<int>> result; result.clear(); sort(num.begin(),num.end()); int i,j,k; for(i=0;i<num.size();i++) { if(i>0&&num[i]==num[i-1]) continue; j=i+1; k=num.size()-1; while(j<k) { if(j>i+1&&num[j]==num[j-1]) { j++; continue; } if(k<num.size()-1 && num[k]==num[k+1]) { k--; continue; } int sum=num[i]+num[j]+num[k]; if(sum>0) k--; else if(sum<0) j++; else{ vector<int> tmp; tmp.push_back(num[i]); tmp.push_back(num[j]); tmp.push_back(num[k]); result.push_back(tmp); j++; k--; } } } return result; }};
0 0
- 【Leetcode】3Sum (Sum)
- Leetcode:2Sum,3Sum
- 【Leetcode】3Sum Closest (Sum)
- leetcode 2 sum 3sum 4sum
- Leetcode 2SUM-3SUM-4SUM
- Leetcode-2sum,3sum,4sum
- leetcode 2 sum & 3 sum & 4 sum
- [LeetCode] 2Sum, 3Sum, 4Sum, 3SUm closet
- [LeetCode] K sum(2Sum、3Sum、4Sum)
- leetcode--sum集合:2sum,3sum,4sum
- leetcode --- 2 sum , 3 sum , 4 sum , k sum problem
- LeetCode: 3Sum
- LeetCode: 3 Sum Closest
- leetcode - 3 Sum
- leetcode - 3 sum closest
- leetcode 3Sum
- leetcode 3Sum Closest
- LeetCode: 3Sum
- 寻找中国的乔布斯 第二届达内发现杯软件大赛决赛开启
- ResultSet 的Type属性 TYPE_FORWARD_ONLY, TYPE_SCROLL_I
- Tomcat修改项目名称
- 免费语言学习服务Duolingo正式进入亚洲市场
- 传球游戏_解题报告
- leetcode:3Sum
- HDOJ 1280 前m大的数
- CSS 完美排序10000条数据li
- iOS开发ASIHTTPRequest下载数据
- ANDROID以流形式上传文件
- iOS开发:block的探究(1)
- 【JavaScript】使用定时器实现Js的延期执行或重复执行setTimeout,setInterval
- java 从jar包中读取资源文件
- UVA 1476