4Sum
来源:互联网 发布:win10装mac os 双系统 编辑:程序博客网 时间:2024/05/22 01:30
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差不多,不过多一个循环
class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { vector<vector<int> > res; if(nums.empty()) return res; // if(nums.size()<4) return res; std::sort(nums.begin(),nums.end()); for(int i=0;i<nums.size();i++){ int target_3 =target -nums[i]; for(int j=i+1;j<nums.size();j++){ int target_2 =target_3-nums[j]; int front =j+1; int back =nums.size()-1; while(front<back){ int sum =nums[front]+nums[back]; if(sum<target_2) front++; else if(sum>target_2)back--; else{ vector<int> right(4,0); right[0] =nums[i]; right[1] =nums[j]; right[2] =nums[front]; right[3] =nums[back]; res.push_back(right); while(front<back&&nums[front]==right[2]) front++; while(front<back&&nums[back]==right[3]) back--; } } while(j+1<nums.size()&&nums[j]==nums[j+1]) j++; } while(i+1<nums.size()&&nums[i]==nums[i+1]) i++; } return res; }};
阅读全文
0 0
- 【Leetcode】4Sum (Sum)
- leetcode 2 sum 3sum 4sum
- 3Sum 3Sum Closest 4Sum
- 3Sum & 3Sum Closest & 4Sum
- 2Sum 3Sum 4Sum
- 3sum、3Sum closet、 4sum
- 3Sum, 3Sum Closest, 4 Sum
- Leetcode 2SUM-3SUM-4SUM
- Leetcode-2sum,3sum,4sum
- leetcode 2 sum & 3 sum & 4 sum
- 4Sum
- 4Sum
- 4Sum
- 4Sum
- 4Sum
- 4Sum
- 4Sum
- 4Sum
- input子系统基础之按键4——输入核心层源码分析
- Cookie和Session详解
- 欧拉函数
- 图片内容转化为坐标与像素
- Android 银行卡类别查询的接口
- 4Sum
- 实现 Amazon S3 数据(文件)分段上传
- 从零基础成为深度学习高手——Ⅱ
- 操作系统内核框架图整理
- Python获取文件目录下视频时长、大小、并写入excle文件
- VPN网关连接多地域线下办公网络(VPN-HUB)
- css知识总结
- 一个网页从输入网址到显示页面的全过程
- 超级楼梯