public ArrayList> threeSum(int[] num) {
ArrayList> resultList = new ArrayList<>();
int len = num.length;
if (num == null || len < 3) {
return list;
}
Arrays.sort(num);
for (int i = 0; i < len; i++) {
if (num[i] > 0) {
return list;
}
if (i > 0 && num[i] == num[i - 1]) {
continue;
}
int L = i + 1;
int R = len - 1;
while (L < R) {
int sum = num[i] + num[L] + num[R];
if (sum == 0) {
ArrayList arrayList = new ArrayList<>();
arrayList.add(num[i]);
arrayList.add(num[L]);
arrayList.add(num[R]);
resultList.add(arrayList);
while (L < R && num[L] == num[L + 1]) {
L++;
}
while (L < R && num[R] == num[R - 1]) {
R--;
}
L++;
R--;
} else if (sum < 0) {
L++;
} else if (sum > 0) {
R--;
}
}
}
return resultList;
}