import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
public class Test {
static HashSet<ArrayList<Integer>> list=new HashSet<ArrayList<Integer>>();
public static HashSet<ArrayList<Integer>> threeOf0(int[] arr) {
ArrayList<Integer> temp=new ArrayList<>();
if(arr.length<3||arr==null)
return list;
Arrays.sort(arr);
//固定i,遍历j和k
for(int i=0;i<arr.length;i++) {
int j=i+1;//j从i的下一位向后遍历
int k=arr.length-1;//k从数组的最后一位向前遍历
while(j<k) {
int sumTwo=arr[i]+arr[j];
if(sumTwo+arr[k]<0) {
j++;
}else if(sumTwo+arr[k]>0) {
k--;
}else {
temp.add(arr[i]);
temp.add(arr[j]);
temp.add(arr[k]);
list.add(temp);
break;
}
}
temp=new ArrayList<>();
}
return list;
}
public static void main(String[] args) {
int[] arr= {5,4,2,7,-3,-1,6,8,0,-8};
HashSet<ArrayList<Integer>> list=threeOf0(arr);
for(ArrayList<Integer> i:list) {
System.out.print(i+" ");
}
}
}
输出:[-3, -1, 4] [-8, 0, 8]