Given an array s of N integers, are there elements a, B, c in S such that A + B + C = 0? Find all unique triplets in the array which gives the sum of zero.
Note:
- Elements in a triplet (a, B, c) must be in Non-descending order. (ie, A ≤ B ≤ C)
- The solution set must not contain duplicate triplets.
For example, given array S = {-1 0 1 2 -1 -4}, A solution set is: (-1, 0, 1) (-1, -1, 2)Original question link: https://oj.leetcode.com/problems/3sum/
Question: given an array of S, where elements A, B, and c make a + B + C = 0 true? Find all the unique combinations with the sum of 0.
public static List<List<Integer>> threeSum(int[] num) {List<List<Integer>> list = new ArrayList<List<Integer>>();int len = num.length;if (len < 3)return list;Arrays.sort(num);Set set = new HashSet();int j = 0, k = 0;for (int i = 0; i < len - 2; i++) {int target = -num[i];j = i + 1;k = len - 1;while (j < k) {if (num[j] + num[k] == target) {List<Integer> li = new ArrayList<Integer>();li.add(num[i]);li.add(num[j]);li.add(num[k]);if (set.add(li))list.add(li);j++;k--;} else if (num[j] + num[k] < target)j++;elsek--;}}return list;}
Leetcode -- 3sum