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
最新推荐文章于 2022-06-30 09:38:16 发布