题解 | #三数之和#
三数之和
http://www.nowcoder.com/practice/345e2ed5f81d4017bbb8cc6055b0b711
public class Solution {
public ArrayList<ArrayList<Integer>> threeSum(int[] num) {
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
Arrays.sort(num);
for(int i = 0;i < num.length ;i++){
if(i > 0 && num[i] == num[i - 1]) continue;
int l = i + 1;
int r = num.length - 1;
while(l < r){
if(num[i] + num[l] + num[r] == 0){
res.add(new ArrayList<Integer>(Arrays.asList(num[i],num[l],num[r])));
while(l < r && num[l] == num[l + 1]) l++;
while(l < r && num[r] == num[r - 1]) r--;
l++;
r--;
}else if(num[i] + num[l] + num[r] < 0){
l++;
}else{
r--;
}
}
}
return res;
}
}