4sum leetcode (18)
来源:互联网 发布:淘宝介入后卖家的影响 编辑:程序博客网 时间:2024/06/06 03:36
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.
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>> vs; int n = nums.size(); if(n<4) { return vs; } for(int i=0; i<n-3;) { int value = target - nums[i]; int temp = nums[i]; vector<int> v = threeSum(nums,value,i+1,n-1); int vsize = v.size(); for(int j=0; j<vsize;) { vector <int> v4; v4.push_back(nums[i]); v4.push_back(v[j++]); v4.push_back(v[j++]); v4.push_back(v[j++]); vs.push_back(v4); } while(i<n&&nums[i]==temp) { i++; } } } vector<int> threeSum(vector<int>& nums,int target,int startindex,int endindex) { vector<int> vs; int n = endindex-startindex+1; if(n<3) { return vs; } for(int i=startindex; i<endindex;) { int value = target - nums[i]; int temp = nums[i]; vector<int> v = twoSUm(nums,value,i+1,endindex); int vsize = v.size(); for(int j=0; j<vsize;) { vs.push_back(nums[i]); vs.push_back(v[j++]); vs.push_back(v[j++]); } while(i<n&&nums[i]==temp) { i++; } } } vector<int> twoSUm(vector<int>& nums,int value,int startindex,int endindex) { vector<int> v; while(startindex<endindex) { if(nums[startindex] + nums[endindex] == value) { v.push_back(nums[startindex]); v.push_back(nums[endindex]); while(startindex<endindex && nums[startindex] == nums[startindex+1]) { startindex++; } startindex++; while(startindex<endindex && nums[endindex] == nums[endindex-1]) { endindex--; } } else if(nums[startindex] + nums[endindex]<value) { startindex++; } else { endindex--; } } return v; }};
0 0
- LeetCode 18: 4Sum
- [leetcode 18] 4Sum
- [leetcode] 18 4Sum
- leetcode.18--------------4Sum
- leetcode 18 4Sum
- LeetCode---(18) 4 Sum
- 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||4 Sum
- 差序格局与关系取向社会
- XCode AutoLayout series 1
- Android自定义View-自动加载更多的ListView
- POJ 1753 Flip Game(类似与N皇后问题的DFS)
- 静态内存,栈内存和动态分配的内存(堆内存)的区别
- 4sum leetcode (18)
- SQL-SQL基础
- 黑马程序员——IO(概述、FileWriter、FileReader)
- 黑马程序员——黑苹果的日记(5)——字符串
- hdoj-2544 最短路【最短路径--dijkstra&&spfa&&floyd】
- Android源码分析之Handler机制
- 用redis实现支持优先级的消息队列
- Andriod studio中出现Connection reselt问题以及gradle问题
- 《The Swift Programming Language》原版中的问题汇总