18. 4Sum
来源:互联网 发布:市场营销大数据分析 编辑:程序博客网 时间:2024/06/02 16:54
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.
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; if(nums.size() < 4) return res; std::sort(nums.begin(), nums.end()); for(int i = 0; i < nums.size()-3; ++i){ int target2 = target - nums[i]; // 3 sum for(int j = i+1; j < nums.size()-2; ++j){ int target3 = target2 - nums[j]; int begin = j+1, end = nums.size()-1; while(begin < end){ if(nums[begin] + nums[end] < target3) begin++; else if(nums[begin] +nums[end] > target3) end--; else{ vector<int> temp(4,0); temp[0] = nums[i]; temp[1] = nums[j]; temp[2] = nums[begin]; temp[3] = nums[end]; res.push_back(temp); while(begin < end && nums[begin] == temp[2]) ++begin; while(begin < end && nums[end] == temp[3]) --end; } } while(j+1 < nums.size()-2 && nums[j+1] == nums[j]) ++j; } while(i+1 < nums.size()-3 && nums[i+1] ==nums[i]) ++i; } return res; }};
0 0
- 15. 3Sum 和 18. 4Sum
- LeetCode --- 18. 4Sum
- [Leetcode] 18. 4Sum
- 18. 4Sum
- 18. 4Sum
- 18. 4Sum
- 18. 4Sum
- 18. 4Sum
- 18. 4Sum
- leetcode 18. 4Sum
- 18. 4Sum
- 18. 4Sum
- 18. 4Sum
- 18. 4Sum LeetCode
- 18. 4Sum
- leetcode 18. 4Sum
- 18. 4Sum
- 18. 4Sum
- 第十六周 职工信息结构体
- 快速排序【JAVA实现】
- 数据库范式
- Flutter基础—定位对齐之大小比例
- NYOJ311完全背包
- 18. 4Sum
- (转)HTTP协议—— 简单认识TCP/IP协议
- PAT---A1065 A+B and C(20)
- 大数据Spark “蘑菇云”行动第102课:Hive性能调优之底层Hadoop引擎调优剖析和最佳实践
- sunny ngrok 使用简介
- OPT算法,FIFO算法,LRU算法,LFU算法的java程序
- ReactiveCocoa详解
- windows下硬盘安装centos
- adb命令记录