LeetCode - 4Sum
来源:互联网 发布:Mac 不能共享文件夹 编辑:程序博客网 时间:2024/05/18 22:41
题目描述:
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]]
这道题和3Sum类似,固定两个数,然后用两个指针进行扫描,时间复杂度为O(n^3)。
#include<iostream>#include<algorithm>#include<vector>using namespace std;class Solution {public: vector<vector<int> > fourSum(vector<int>& nums, int target) {sort(nums.begin(),nums.end());vector<vector<int> > result;if(nums.size()<4) return result;for(int i=0;i<nums.size()-3;i++){while(i>0&&nums[i]==nums[i-1]) i++;for(int l=i+1;l<nums.size()-2;l++){while(l>(i+1)&&(nums[l]==nums[l-1])) l++;for(int j=l+1,k=nums.size()-1;j<k;){if((nums[i]+nums[l]+nums[j]+nums[k])==target){cout<<nums[i]<<" "<<nums[l]<<" "<<nums[j]<<" "<<nums[k]<<endl;vector<int> x;x.push_back(nums[i]);x.push_back(nums[l]);x.push_back(nums[j]);x.push_back(nums[k]);result.push_back(x);j++;while(nums[j]==nums[j-1]&&j<k) j++;}else if((nums[i]+nums[l]+nums[j]+nums[k])<target){j++;while(nums[j]==nums[j-1]&&j<k) j++;}else if((nums[i]+nums[l]+nums[j]+nums[k])>target){k--;while(nums[k]==nums[k+1]&&j<k) k--;}}}} return result; }};
0 0
- 【Leetcode】4Sum (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: 4 Sum
- LeetCode: 4Sum
- LeetCode 4Sum
- Leetcode: 4SUM
- 【leetcode】 4 sum
- LeetCode 4Sum
- leetcode 44: 4Sum
- [Leetcode] 4 Sum [Unsolved]
- 【leetcode】4Sum
- 自己动手合成喜欢的编程字体
- 别人眼中的程序员VS现实中的程序员
- virt viewer 3.0 交叉编译
- solr function filter,用function query 进行 filter处理
- js当中==和===的区别,!=和!==的区别
- LeetCode - 4Sum
- 宣传列表
- js--小demo--字符串长度判断,超出进行自动截取(支持中文)
- 机器学习、深度学习的理论与实战入门建议整理(二)
- GPRS Operation & States
- 方法的重载与覆盖
- 程序员的浪漫--java打印心形图案
- apache apollo服务器部署(windows)
- Struts2框架提供的常量