求子集

作者: 不识地理不懂距离 | 来源:发表于2019-03-17 20:45 被阅读0次

利用递归的方法求子集

每层递归是不同的排列组合,因为前面的数已经排列组合过了,每次只需要从下一个数开始组合即可

class Solution {

    public List<List<Integer>> subsets(int[] nums) {

        List<List<Integer>> ret = new ArrayList<>();

        if (nums == null) {

              return ret;

          }

        Arrays.sort(nums);

        dfs(nums, 0, new ArrayList<Integer> (), ret);       

        return ret;

    }

    public void dfs(int[] S, int index, List<Integer> path, List<List<Integer>> ret) {

        ret.add(new ArrayList<Integer>(path));     

        for (int i = index; i < S.length; i++) {

            path.add(S[i]);

            dfs(S, i + 1, path, ret);

            path.remove(path.size() - 1);

        }

    }

}

相关文章

网友评论

      本文标题:求子集

      本文链接:https://www.haomeiwen.com/subject/docbeqtx.html