4Sum
2015-08-08 20:40
309 查看
Given an array S of n integers, are there elements a,
b, c, and d in S such that a + b +
c + d = target? Find all unique quadruplets in the array which gives the sum of target.
Note:
Elements in a quadruplet (a,b,c,d) must be in non-descending order. (ie,
a ≤ b ≤ c ≤ d)
The solution set must not contain duplicate quadruplets.
Solution:
b, c, and d in S such that a + b +
c + d = target? Find all unique quadruplets in the array which gives the sum of target.
Note:
Elements in a quadruplet (a,b,c,d) must be in non-descending order. (ie,
a ≤ b ≤ c ≤ d)
The solution set must not contain duplicate quadruplets.
For example, given array S = {1 0 -1 0 -2 2}, and target = 0. A solution set is: (-1, 0, 0, 1) (-2, -1, 1, 2) (-2, 0, 0, 2)
Solution:
class Solution { public: vector<vector<int>> fourSum(vector<int>& nums, int target) { vector<vector<int> > res; int len = nums.size(); if(len < 4) return res; sort(nums.begin(), nums.end()); for(int i = 0; i < len; ++i) { if(i != 0 && nums[i] == nums[i-1]) continue; for(int j = i + 1; j < len; ++j) { if(j != i + 1 && nums[j] == nums[j-1]) continue; int left = j + 1, right = len - 1; int mid = target - nums[i] - nums[j]; vector<int> v; v.push_back(nums[i]); v.push_back(nums[j]); while(left < right) { int l = nums[left], r = nums[right]; if(l + r == mid) { v.push_back(l); v.push_back(r); res.push_back(v); v.pop_back(); v.pop_back(); while(nums[++left] == l) ; while(nums[--right] == r) ; } else if(l + r < mid) { while(nums[++left] == l) ; } else { while(nums[--right] == r) ; } } } } return res; } };
相关文章推荐
- 运算符、控制流
- 毛玻璃效果
- POJ1811 (Prime Test Pollard rho整数分解,Miller-Rabin素数测试)
- 解决ubuntu的wifi连接不稳定
- 用yum工具下载一个rpm包
- [leetcode] Implement Queue using Stacks
- iBatis的SqlMapClient.insert()方法的返回值
- HDU 1180 诡异的楼梯(广搜、优先队列)
- Windows下一个SlikSVN使用
- 使用c/c++扩展python
- Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置
- linux下的io多路复用形象化理解
- Android中关于键盘的操作
- UIButton的一些常用知识点
- 应届生自我介绍模板
- Apache + Tomcat 负载均衡 session复制
- hdu 5361 In Touch 最短路(set+搜索实现)
- Sum Root to Leaf Numbers
- 配色方式
- JDBC连接mysql