4Sum
来源:互联网 发布:数据中心与云计算 编辑:程序博客网 时间:2024/06/14 21:43
题目描述
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)
题目解答
基于TwoSum的扩展,把4Sum问题转化为TwoSum问题即可
代码实现
public class Solution { public List<List<Integer>> fourSum(int[] nums, int target) { if(nums.length < 4) return new ArrayList<>(); List<List<Integer>> ret = new ArrayList<>(); Arrays.sort(nums); int arrLen = nums.length; for(int i = 0; i < arrLen; i++){ for(int j = i+1; j < arrLen; j++ ){ int crossValue = target - nums[i] - nums[j]; int left = j + 1; int right = arrLen - 1; while(left < right){ List<Integer> quadruple = new ArrayList<>(); int sum = nums[left] + nums[right]; if(crossValue == sum){ quadruple.add(nums[i]); quadruple.add(nums[j]); quadruple.add(nums[left]); quadruple.add(nums[right]); ret.add(quadruple); while(left < right && nums[left] == nums[left+1]) left++; while(left < right && nums[right-1] == nums[right]) right--; left++; right--; }else if(crossValue > sum){ left++; }else { right--; } } while(j < arrLen - 1 && nums[j] == nums[j+1]) j++; } while(i < arrLen-1 && nums[i] == nums[i+1]) i++; } return ret; }}
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
- TSMessages,非HUD风格的iOS提示框(附官方demo BUG修复方案)
- 用jQuery如何实现删除子节点和winform label显示数据分页
- 1005. Spell It Right (20)
- Java中的wait和notify总结和应用
- GLib中的数据类型及操作
- 4Sum
- ms sql 2008 错误代码:126
- OpenCV 学习笔记(模板匹配)
- 关于虚拟机无法连网的问题
- onkeydown事件实例应用
- SQLiteDataBase(通过测试类测试写好的SQLite的相关数据库操作)
- 静态库创建与使用
- Android系统架构
- Infinity Studio 开发组入组审核题