Leetcode 3Sum
来源:互联网 发布:富士康网络重复报名 编辑:程序博客网 时间:2024/06/08 15:03
类似于2Sum做法,复杂度是O(n^2),难点在于如何去重三元组。
每次遇到符合的三元组,push_back进vector以后,还要继续往下扫,还有没有符合的,但是往下扫的时候记得跳过相同的元素。
附上K-Sum:求和问题总结的链接http://tech-wonderland.net/blog/summary-of-ksum-problems.html
class Solution {public: vector<vector<int> > threeSum(vector<int> &num) { sort(num.begin(), num.end()); vector<vector<int> > ans; vector<int> v; for(int i = 0; i < num.size() && num[i] <= 0; i++){ if(i >= 0 && num[i] == num[i-1]){ continue; } int p = i+1, q = num.size()-1, cur = -num[i]; while(p < q){ if(p == i || num[p] + num[q] < cur){ p++; } else if(q == i || num[p] + num[q] > cur){ q--; } else if(num[p] + num[q] == cur){ int n1 = num[i], n2 = num[p], n3 = num[q]; if(n1 > n2){ swap(n1, n2); } v.push_back(n1); v.push_back(n2); v.push_back(n3); ans.push_back(v); v.clear(); while(p < q && num[p+1] == num[p]){ p++; } while(q > p && num[q-1] == num[q]){ q--; } p++; } } } return ans; }};
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
- Hbase学习笔记
- 解决 chrome 浏览器对 div 的 display : none 不支持
- Makefile详解
- 我的首个电子书软件--嘎嘎读书 的开发(五)
- 深入理解计算机系统--第二章(读书笔记)
- Leetcode 3Sum
- WinCE 系统界面修改偏方(一)
- 【转】hive中的LEFT SEMI JOIN
- php 字符串处理
- 【九度】并查集题目整理
- 使Eclipse的代码编辑器变得更智能
- 设置easyui菜单项不可用
- Debug Android and Linux suspend and resume
- Oracle RMAN Recover中使用BBED 跳过缺失的归档 继续 Recover 的测试 .