[Leetcode] 4Sum
来源:互联网 发布:慧思达软件多少钱 编辑:程序博客网 时间:2024/06/18 17:35
题目
Given anarray S of n integers, are thereelements a, b, c, and d in S suchthat a + b + c + d = target? Find allunique 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.
Asolution set is:
(-1, 0, 0, 1)
(-2, -1, 1, 2)
(-2, 0, 0, 2)
思路
有了2Sum,3Sum的基础,这道题不难。前面在解决3Sum的时候转化为2Sum来求解,这里同样可以把4Sum转化为3Sum来求解,需要注意的是去除重复结果。
代码
public class Solution { List<List<Integer>> result =new ArrayList<List<Integer>>(); public List<List<Integer>>fourSum(int[] nums, int target) { if (nums == null) return result; int len = nums.length; if (len < 4) return result; Arrays.sort(nums); for (int i = 0; i < len - 3; i++) { if (i > 0 && nums[i] ==nums[i-1]) continue; threeSum(nums, i + 1, len - 1,target, nums[i]); } return result; } public void threeSum(int[] nums, int l, intr, int target, int num1) { for (int i = l; i <= r - 2; i++) { if (i > l && nums[i] ==nums[i-1]) continue; twoSum(nums, i + 1, r, target,num1, nums[i]); } } public void twoSum(int[] nums, int l, intr, int target, int num1, int num2){ while (l < r) { if (num1 + num2 + nums[l] + nums[r]== target) { List<Integer> list = newArrayList<Integer>(); list.add(num1); list.add(num2); list.add(nums[l]); list.add(nums[r]); result.add(list); while (l < r && nums[l] ==nums[l+1]) l++; while (l < r &&nums[r] == nums[r-1]) r--; l++; r--; }else if (num1 + num2 + nums[l] +nums[r] < target) { l++; }else { r--; } } }}
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
- HMM学习笔记2
- java.lang.IllegalStateException: The content of the adapter has changed but
- 关于lnmp如何删除.user.ini文件
- MySQL插入百万条测试数据
- ProgressBar颜色设定及绘制文字显示
- [Leetcode] 4Sum
- 利用原生Js方法实现发送验证码倒计时
- <精灵萌宠总动>隐私政策
- Android 验证码倒计时
- 类别,属性,成员变量,arc学习总结
- CodeForces 148D Bag of mice [概率DP]
- 跳转到指定的viewcontroller
- IIR无限冲击响应滤波器设计
- 杭电1391 Number Steps