Java | 3 sum 【三数之和】排序+三指针+去重
三数之和
http://www.nowcoder.com/practice/345e2ed5f81d4017bbb8cc6055b0b711
import java.util.*;
public class Solution {
public ArrayList<ArrayList<Integer>> threeSum(int[] nums) {
Arrays.sort(nums);
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
int len = nums.length;
for (int a = 0; a < len; a++) {
if (nums[a] > 0) {
return res;
}
if (a > 0 && nums[a] == nums[a-1]) {
continue;
}
int b = a + 1;
int c = len - 1;
while (b < c) {
int sum = nums[a] + nums[b] + nums[c];
if (sum == 0) {
ArrayList<Integer> list = new ArrayList<>();
list.add(nums[a]);
list.add(nums[b]);
list.add(nums[c]);
res.add(list);
while (b < c && nums[b+1] == nums[b]) {
b++;
}
while (b < c && nums[c] == nums[c-1]) {
c--;
}
b++;
c--;
} else if (sum > 0) {
c--;
} else {
b++;
}
}
}
return res;
}
}