zoukankan      html  css  js  c++  java
  • LeetCode 78 子集

    LeetCode 78 子集

    问题描述
    给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
    说明:解集不能包含重复的子集。

    深度优先遍历 + 回溯

    执行用时:1 ms, 在所有 Java 提交中击败了99.39%的用户
    内存消耗:39 MB, 在所有 Java 提交中击败了61.47%的用户

    class Solution {
        private List<List<Integer>> results;
        //深度优先遍历DFS
        public List<List<Integer>> subsets(int[] nums) {
            //初始化结果集合
            results = new ArrayList<List<Integer>>();
            results.add(new ArrayList<Integer>());
            if(nums==null || nums.length==0) {
                return results;
            }
            dfs(nums, -1, new ArrayList<Integer>());
    
            return results;
        }
        
        public void dfs(int[] nums, int curr, List<Integer> result) {
            if(curr>=0 && curr<=nums.length-1) {
                results.add(new ArrayList<Integer>(result));
                if(curr==nums.length-1) {
                    return;
                }
            }
    
            //回溯
            for(int next=curr+1; next<nums.length; next++) {
                result.add(nums[next]);
                dfs(nums, next, result);
                result.remove(result.size()-1);
            }
        }
    }
    
  • 相关阅读:
    迭代器和生成器
    装饰器
    函数进阶二
    函数进阶
    函数的初识
    python基础七
    python基础六
    python基础五
    python基础四
    python2与python3的区别
  • 原文地址:https://www.cnblogs.com/CodeSPA/p/13700267.html
Copyright © 2011-2022 走看看