public class Solution {
/**
* @param numbers : Give an array numbers of n integer
* @return : Find all unique triplets in the array which gives the sum of zero.
*/
public ArrayList<ArrayList<Integer>> threeSum(int[] numbers) {
// 2015-10-14 DFS
ArrayList<ArrayList<Integer>> rst = new ArrayList<>();
if (numbers == null || numbers.length == 0) {
return rst;
}
Arrays.sort(numbers);
ArrayList<Integer> list = new ArrayList<>();
helper(numbers, rst, list, 0);
return rst;
}
private void helper(int[] numbers, ArrayList<ArrayList<Integer>> rst,
ArrayList<Integer> list, int pos) {
if (list.size() == 3) {
if (list.get(0) + list.get(1) + list.get(2) == 0
&& !rst.contains(list)) {
rst.add(new ArrayList<Integer>(list));
}
return;
}
for (int i = pos; i < numbers.length; i++) {
list.add(numbers[i]);
helper(numbers, rst, list, i + 1);
list.remove(list.size() - 1);
}
}
}
[刷题]3 Sum
最新推荐文章于 2025-03-16 21:27:52 发布
本文介绍了一个使用深度优先搜索(DFS)策略解决3Sum问题的Java实现方案。该方案通过递归的方式寻找数组中所有唯一三元组,使得这三个数相加等于零,并确保结果中不含重复的三元组。
712

被折叠的 条评论
为什么被折叠?



