Leetcode: 4Sum
来源:互联网 发布:Php并发curl 编辑:程序博客网 时间:2024/04/30 06:02
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)
思路:和3sum思想一致,排序后,遍历最小值,并往右相加。
public class Solution { public ArrayList<ArrayList<Integer>> fourSum(int[] num, int target) { ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>(); if (num == null || num.length < 4) { return res; } Arrays.sort(num); for (int first = 0; first < num.length - 3; first++) { if (first != 0 && num[first] == num[first - 1]) { continue; } for (int second = first + 1; second < num.length - 2; second++) { if (second != first + 1 && num[second] == num[second - 1]) { continue; } int third = second + 1; int fourth = num.length - 1; while (third < fourth) { int sum = num[first] + num[second] + num[third] + num[fourth]; if (sum == target) { ArrayList<Integer> item = new ArrayList<Integer>(); item.add(num[first]); item.add(num[second]); item.add(num[third]); item.add(num[fourth]); res.add(item); third++; fourth--; while (third < fourth && num[third] == num[third - 1]) { third++; } while (third < fourth && num[fourth] == num[fourth + 1]) { fourth--; } } else if (sum > target) { fourth--; } else { third++; } } } } return res; }}
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
- 堆和栈的区别(转过无数次的文章)
- Socket同步异步学习
- Java深入 - Java 序列化
- Entity Framework 教程
- 面试题2——JAVA中方法和变量在继承中的覆盖和隐藏
- Leetcode: 4Sum
- case when then的用法
- NSURL与NSURLConnection
- IOS开发---- IOS7官方推荐图标和图像尺寸
- 必看的主键与聚集索引的关系
- Android编译系统简要介绍和学习计划
- 在线预览实现
- 17-基于curses的简单网络聊天程序(1)
- 网络通信第三方框架