4Sum
来源:互联网 发布:京东数据罗盘多少钱 编辑:程序博客网 时间:2024/05/21 19:00
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)
Solution:
class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { vector<vector<int> > res; int len = nums.size(); if(len < 4) return res; sort(nums.begin(), nums.end()); for(int i = 0; i < len; ++i) { if(i != 0 && nums[i] == nums[i-1]) continue; for(int j = i + 1; j < len; ++j) { if(j != i + 1 && nums[j] == nums[j-1]) continue; int left = j + 1, right = len - 1; int mid = target - nums[i] - nums[j]; vector<int> v; v.push_back(nums[i]); v.push_back(nums[j]); while(left < right) { int l = nums[left], r = nums[right]; if(l + r == mid) { v.push_back(l); v.push_back(r); res.push_back(v); v.pop_back(); v.pop_back(); while(nums[++left] == l) ; while(nums[--right] == r) ; } else if(l + r < mid) { while(nums[++left] == l) ; } else { while(nums[--right] == r) ; } } } } 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
- 卡尔曼滤波融合库函数+Arduino实例
- 【JS设计模式】装饰者模式
- 研一上学习任务
- 毛玻璃效果
- 黑马程序员—— java基础
- 4Sum
- Node.js文件模块fs监视文件变化
- HDU 1846 Brave Game
- POJ 2407 Relatives(欧拉函数)
- Hibernate使用
- 如何快速成为数据分析师?
- mongodb主从复制和副本集
- ubuntu下发射无线WIFI热点
- HDOJ 1009