题解 | #二叉树的中序遍历#
数组中相加和为0的三元组
http://www.nowcoder.com/practice/345e2ed5f81d4017bbb8cc6055b0b711
1、双指针
import java.util.*; public class Solution { public ArrayList<ArrayList<Integer>> threeSum(int[] num) { ArrayList<ArrayList<Integer>> res = new ArrayList<>(); if (num == null || num.length == 0) { return res; } int n = num.length; Arrays.sort(num); for (int i = 0; i < n; i++){ if (i > 0 && num[i] == num[i - 1]) continue; int l = i + 1, r = n - 1; int x = -num[i]; while (l < r) { if (num[l] + num[r] < x) l++; else if (num[l] + num[r] > x) r--; else { ArrayList<Integer> list = new ArrayList<>(); list.add(num[i]); list.add(num[l]); list.add(num[r]); res.add(list); while (l < r && num[l] == num[++l]); while (l < r && num[r] == num[--r]); } } } return res; } }