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的扩展,在3Sum外面再加一层循环,注意去重处理。
public class Solution {
public List<List<Integer>> fourSum(int[] nums, int target) {
List<List<Integer>> result = new ArrayList<List<Integer>>();
if (nums == null || nums.length < 4)
return result;
Arrays.sort(nums);
int N = nums.length;
for (int i = 0; i < N - 3; i++) {
if (i > 0 && nums[i] == nums[i - 1])
continue;
for (int j = i + 1; j < N - 2; j++) {
if (j > i + 1 && nums[j] == nums[j - 1])
continue;
int p = j + 1, q = N - 1;
while (p < q) {
int sum4 = nums[i] + nums[j] + nums[p] + nums[q];
if (sum4 == target) {
List<Integer> item = new ArrayList<Integer>();
item.add(nums[i]);
item.add(nums[j]);
item.add(nums[p]);
item.add(nums[q]);
result.add(item);
while (++p < q && nums[p] == nums[p - 1]);
while (p < --q && nums[q] == nums[q + 1]);
} else if (sum4 > target) {
while (p < --q && nums[q] == nums[q + 1]);
} else {
while (++p < q && nums[p] == nums[p - 1]);
}
}
}
}
return result;
}
}
分享到:
相关推荐
java java_leetcode-112-path-sum
java java_leetcode-113-path-sumII
001.two-sum │ ├── information.json │ ├── README.md ├── 002.add-two-numbers │ ├── information.json │ ├── README.md ... 有一些有用的选项: Options: -r, --rule crawling rule, ...
《算法——LeetCode解决方案解析》 在编程领域,算法扮演着至关重要的角色,它是程序员的智慧结晶,是解决复杂问题的高效工具。本资源“Algorithm-LeetCode-Solution-From-GuaZiDou.zip”正是围绕这个核心主题展开...
vscode安装leetcode leetcode-js-tdd leetcode 勇士的简单样板 如何使用 克隆这个 repo 在你的 vscode 中安装 配置扩展以使用 repo 中的problems文件夹 使用1.two-sum.js案例导出解决方案 module . exports = { // ...
离线和leetcode leetcode-cli 一个享受 leetcode 的高效 cli 工具! 非常感谢 leetcode.com,一个非常棒的网站!...⦙⦙⦙⦙⦙⦙⦙⦙ ...'[3,2,4]\n7' Submit final solution! $ leetcode submit ./two-sum.cpp
离线和leetcode leetcode-cli 一个享受 leetcode 的高效 cli 工具! 非常感谢 leetcode.com,一个非常棒的网站!...⦙⦙⦙⦙⦙⦙⦙⦙ ...'[3,2,4]\n7' Submit final solution! $ leetcode submit ./two-sum.cpp
leetcode 答案 leetcode-machine-swift :SOS_button: 请帮助在Sources/leetcode-machine-swift/leetcode.swift设置所有 leetcode 问题。 :SOS_button: 在 ...利用自动补全、类型检查......Sum " , inputs : [([ 2 , 7
https://leetcode-cn.com/problems/two-sum/ 难度 : 简单 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。...
js js_leetcode题解之18-4sum.js
LeetCode -- Path Sum III分析及实现方法 Path Sum III是LeetCode中的一个经典问题,旨在计算给定二叉树中所有路径的和等于某个给定值的路径数量。下面我们将详细介绍Path Sum III的分析及实现方法。 一、问题描述...
- **2.1.10 4Sum** - 在数组中找到四个数之和等于零的所有组合。 - 实现思路:类似3Sum,先排序,再通过两层循环固定两个数,使用双指针法查找另外两个数。 - **2.1.11 Remove Element** - 移除数组中所有指定...
1. "001_two_sum":这是LeetCode的第一道题目,名为“两数之和”。该问题要求在给定整数数组中找到两个元素,使得它们的和等于一个特定的目标值。你需要返回这两个元素的索引。这是一个基础的哈希表应用,通过遍历...
leetcode 只专注于解决方案! leetcode-helper是一个单 jar 库,它使您无需为每个问题设置解决方案测试脚手架。 生成解决方案/测试框架,编译,通过一行命令进行测试。 集成了Junit ...two_sum/ │ └──
- 3Sum / 3Sum Closest / 4Sum: 这些题目都涉及到在数组中寻找具有特定和的数字组合,这通常需要用到双指针技术。 - Remove Nth Node From End of List: 给定一个链表,删除链表中的第n个节点。 - Valid Parentheses...
leetcode 2 leetcode-训练 算法训练。 java $: javac hello.java java $: java hello c $: gcc hello.c 如果没有错误会生成a.out 可执行文件 c $: ./a.out leetcode cli leetcode version leetcode help leetcode ...
例如,"Two Sum"问题要求你在数组中找到两个数,使得它们的和等于一个特定的目标值,这涉及到哈希表的使用来实现快速查找。"Merge Intervals"则要求合并重叠的区间,考察了排序和区间操作技巧。 2. **算法**:题目...
leetcode编辑器leetcode-问题 自定义代码演示 leetcode 编辑器配置 代码文件名: $ ! velocityTool . camelCaseName(${question ...com.shuzijun.leetcode.editor.en ...Sum ${question.titleSlug} question t
4. **堆栈**: - 堆栈数据结构可以用于处理与括号匹配、表达式求值等相关的题目。 - 在 SumofSubarrayMinimums 题目中,堆栈可用于高效地处理连续范围内的最小值求和问题。 5. **链表**: - 链表结构常出现在...
-4] 示例输出: [ [-1, 0, 1], [-1, -1, 2] ] 首先,我最自然的想法是简单地搜索给定数组中 3 个数字的所有可能组合,并找出满足请求的组合。 这该怎么做? 我们将遍历数组中的每个元素,对于每个元素,我们将搜索其...