import java.util.*;
import java.util.stream.Collectors;



public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型一维数组
     * @return int整型二维数组
     */
    public int[][] findTriplets (int[] nums) {
        // write code here
        int lp = 0, rpS = nums.length - 1, rp = nums.length - 1;
        Arrays.sort(nums);
        List<List<Integer>> result = new ArrayList<>();
        while ((rp-lp) > 1) {
            for (int i = lp+1; i < rp; i++) {
                int curSum = nums[lp] + nums[i] + nums[rp];
                if (curSum == 0) {
                    List<Integer> recordL = new ArrayList<>(Arrays.asList(nums[lp], nums[i],
                                                            nums[rp]));
                    if (!result.contains(recordL)){
                        result.add(recordL);
                    }                                      
                }
            }
            if ((rp-lp) == 2){
                lp += 1;
                rp = rpS;
            }else{
                rp -= 1;
            } 
        }
        int[][] finalResult = new int[result.size()][];
        for (int i = 0; i < result.size(); i++){
            finalResult[i] = new int[result.get(i).size()];
            for (int j = 0; j < result.get(i).size(); j++){
                finalResult[i][j] = result.get(i).get(j);
            }
        }
        return finalResult;
    }
}