[LeetCode] 18. 4Sum
来源:互联网 发布:sql server r2 32位 编辑:程序博客网 时间:2024/06/08 09:06
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: 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]]
class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { vector<vector<int>> res; sort(nums.begin(), nums.end()); for (int k1 = 0; k1 < nums.size(); k1++) { int target3 = target - nums[k1]; for (int k2 = k1 + 1; k2 < nums.size(); k2++) { int target2 = target3 - nums[k2]; for (int i = k2 + 1, j = nums.size() - 1; i < j; ) { int sum2 = nums[i] + nums[j]; if (sum2 == target2) { res.push_back({nums[k1], nums[k2], nums[i], nums[j]}); for (int dup = nums[i]; i < j && nums[i] == dup; i++); for (int dup = nums[j]; i < j && nums[j] == dup; j--); } else if (sum2 < target2) i++; else j--; } for (int dup = nums[k2]; k2 + 1 < nums.size() && nums[k2 + 1] == dup; k2++); } for (int dup = nums[k1]; k1 + 1 < nums.size() && nums[k1 + 1] == dup; k1++); } return res; }};
阅读全文
0 0
- LeetCode --- 18. 4Sum
- [Leetcode] 18. 4Sum
- leetcode 18. 4Sum
- 18. 4Sum LeetCode
- leetcode 18. 4Sum
- 【LeetCode】18. 4Sum
- LeetCode - 18. 4Sum
- leetcode 18. 4Sum
- Leetcode 18. 4Sum
- LeetCode 18. 4Sum
- 【leetcode】18. 4Sum
- leetcode 18. 4Sum
- [leetcode]18. 4Sum
- leetcode 18. 4Sum
- leetcode 18. 4Sum
- leetcode 18. 4Sum
- [LeetCode] 18. 4Sum
- LeetCode 18. 4Sum
- 接口与抽象类的差别
- 安卓数据存储之SharedPreferences存储
- 【LeetCode】152. Maximum Product Subarray最大连续子数组乘积
- C++顶层const和底层const的区别
- 数据库系统
- [LeetCode] 18. 4Sum
- HDU-5578-Friendship of Frog【2015上海赛区】(水题)
- Jenkins+ant+jmeter环境搭建
- 0/1背包问题
- JAVA 23种开发模式详解(代码举例)
- iptables 命令字典
- Android自适应屏幕分辨率
- GLSL(5)-compute shader小结
- unity3D 控制动画播放进度