美文网首页
Subsets解题

Subsets解题

作者: 联想桥南 | 来源:发表于2017-11-19 23:11 被阅读0次

leetcode 78题
这是一类题,用DFS思路实现的
相关题型见leetcode DFS相关题

subsets题的描述是,求数组中所有可能的子数组
比如{1,2,3}返回{1} {1,2} {1,2,3} {1,3} {2} {2,3} {3}
构造一个二叉树,左子树表示选择该层处理的节点,右子树表示不选择,最终的叶节点就是所有子集合。


深度优先所有叶子节点
    public List<List<Integer>> findSubsets(int[] nums) {
        List<List<Integer>> list = new ArrayList<>();
        Arrays.sort(nums);
        backtrack(list, new ArrayList<>(), nums, 0);
        return list;
    }

    private void backtrack(List<List<Integer>> list , List<Integer> tempList,
         int [] nums, int start){
        list.add(new ArrayList<>(tempList));
        for(int i = start; i < nums.length; i++){
            tempList.add(nums[i]);
            backtrack(list, tempList, nums, i + 1);
            tempList.remove(tempList.size() - 1);
        }
    }

这是DFS基本模版,用这种写法,实现深度遍历二叉树。
切忌不要陷入递归循环的嵌套中,要用直觉,多刷类似的题。
数组下标指针,递归回溯后,减枝。

八皇后也是DFS类型的题。

相关文章

  • Subsets解题

    leetcode 78题这是一类题,用DFS思路实现的相关题型见leetcode DFS相关题 subsets题的...

  • 78. Subsets

    题目链接 https://leetcode.com/problems/subsets/ 解题思路 dfs 代码

  • 78.子集

    原题 https://leetcode-cn.com/problems/subsets/ 解题思路 看到 「子集」...

  • 90.子集 II

    原题 https://leetcode-cn.com/problems/subsets-ii/ 解题思路 同 78...

  • Subsets II解题报告

    Description: Given a list of numbers that may has duplica...

  • Leetcode【78、90、289、621、718】

    问题描述:【BFS、Bit】78. Subsets 解题思路: 方法1(回溯法): 这道题是给一个数组,返回所有的...

  • LeetCode #78 #90 2018-07-30

    78. Subsets https://leetcode.com/problems/subsets/descrip...

  • 78.Subsets

    78.Subsets 题目:https://leetcode.com/problems/subsets/ 难度 :...

  • Leetcode-backTracking

    Leetcode 78. Subsets. Subsets题,时间复杂度一般是O(2^n), 因为 2^n是子集的...

  • Subsets

    这是一道求子集的题目,题目链接,一开始用了三重循环,复杂度极高,不过还是没有超时。代码如下 代码思路就是每次加入一...

网友评论

      本文标题:Subsets解题

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