LeetCode算法题——18. 4Sum
来源:互联网 发布:python 二叉树遍历 编辑:程序博客网 时间:2024/06/01 11:18
题目:
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]
A solution set is:
[
[-1, 0, 0, 1],
[-2, -1, 1, 2],
[-2, 0, 0, 2]
]
算法思想:
与3Sum相似,只不过在3Sum基础上增加一层循环,可参考3Sum实现
C++代码实现:
#include <iostream>#include <vector>#include <algorithm>using namespace std;class Solution {public: vector<vector<int> > fourSum(vector<int>& nums, int target) { vector<vector<int> > result; sort(nums.begin(),nums.end()); for(int m=0;m<nums.size();m++){ if(m>0&&nums[m]==nums[m-1])continue; for(int i=m+1;i<nums.size();i++){if(i>m+1&&nums[i]==nums[i-1])continue; int twoSumTarget=target-nums[i]-nums[m];int j=i+1;int k=nums.size()-1;while(j<k){if(nums[j]+nums[k]==twoSumTarget){vector<int> temp;temp.push_back(nums[m]); temp.push_back(nums[i]); temp.push_back(nums[j]); temp.push_back(nums[k]); result.push_back(temp); while (j < k && nums[j] == nums[j + 1]) ++j;//重复元素跳过 while (i < k && nums[k] == nums[k - 1]) --k; k--; j++;}else if(nums[j]+nums[k]>twoSumTarget){//两数之和大于目标值,则尾指针向前移动 k--;}else{j++;}} } } return result; }};int main(){vector<vector<int> > result;int d[6]={1, 0, -1, 0, -2, 2};vector<int> data;for(int i=0;i<6;i++){data.push_back(d[i]);}Solution sol;result=sol.fourSum(data,0);for(int i=0;i<result.size();i++){for(int j=0;j<result[i].size();j++){cout<<result[i][j]<<" ";}cout<<endl;}}
0 0
- LeetCode算法题——18. 4Sum
- LeetCode算法题——Two Sum
- LeetCode算法题——Two Sum
- python写算法题:leetcode: 18. 4Sum
- LeetCode算法题——15. 3Sum
- LeetCode算法题——16. 3Sum Closest
- LeetCode算法题——Combination Sum I & II
- LeetCode算法题——Minimum Path Sum
- LeetCode—**Combination Sum 利用DFS算法
- Sum—LeetCode-18 4Sum
- Sum—LeetCode-454 4Sum II
- LeetCode——4Sum
- leetcode——4Sum
- 4Sum——LeetCode
- 【LeetCode】LeetCode——第18题:4Sum
- LeetCode OJ算法题(十七):4Sum
- LeetCode算法问题9 —— Two Sum
- 算法练习专题——LeetCode系列之 Two Sum
- 探讨php,mysql编码问题 ---1
- Activit多实例任务
- Java模板引擎之Freemarker
- 批量update的几种方式
- 基础练习 Sine之舞
- LeetCode算法题——18. 4Sum
- Linux命令大全(五)--Linux网络通信工具
- Unity Editor 基础篇(六):Property Drawers
- DISKPART 硬盘只读
- 摄像头模拟【2016.3.26】
- 线程调度—优先级调度
- win7 VS2013下搭建opengl es 2.0开发环境
- 运算符
- scala与java混编maven插件