1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
public ArrayList<ArrayList<Integer>> threeSum (int[] num) {
ArrayList<ArrayList<Integer>> ans = new ArrayList<ArrayList<Integer>>();
Arrays.sort(num);
for(int i=0;i<num.length && num[i]<=0;i++){
if(i>0&&num[i]==num[i-1]){
continue;
}
int j=i+1,k=num.length-1;
while (j<k) {
int valuei=num[i];
int valuej=num[j];
int valuek=num[k];
int sum = valuei+valuej+valuek;
if(sum==0){
ans.add(new ArrayList<>(Arrays.asList(valuei,valuej,valuek)));
}
if(sum>0){
while (j<k&&num[k]==valuek) {
k--;
}
}else{
while (j<k&&num[j]==valuej) {
j++;
}
}
}
}
return ans;
}
|