public List<List<Integer>> threeSum1(int[] nums) {
        List<List<Integer>> res = new LinkedList<>();
        if (nums == null) {
            return res;
        }
        int len = nums.length;
        if (len <= 1) {
            return res;
        }
        List<Set<Integer>> sets = new LinkedList<>();
        int a, b, c;
        for (int i = 0; i < len; i++) {
            a = nums[i];
            if (i + 1 < len) {
                for (int j = i + 1; j < len; j++) {
                    b = nums[j];
                    if (j + 1 < len) {
                        for (int k = j + 1; k < len; k++) {
                            c = nums[k];
                            if (a + b + c == 0) {
                                Set<Integer> tmp = new HashSet<>();
                                tmp.add(a);
                                tmp.add(b);
                                tmp.add(c);
                                if (!sets.contains(tmp)) {
                                    sets.add(tmp);
                                    List<Integer> tmpl = new LinkedList<>();
                                    tmpl.add(a);
                                    tmpl.add(b);
                                    tmpl.add(c);
                                    res.add(tmpl);
                                }

                            }
                        }
                    }
                }
            }
        }
        return res;
    }