leetcode78子集

Posted lisin-lee-cooper

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode78子集相关的知识,希望对你有一定的参考价值。

一.问题描述

  • 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
  • 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
  • 示例 1:
  • 输入:nums = [1,2,3]
  • 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
  • 示例 2:
  • 输入:nums = [0]
  • 输出:[[],[0]]

二.示例代码

public class Subset78 {

    static List<Integer> t = new ArrayList<>();
    static List<List<Integer>> ans = new ArrayList<>();

    public static void main(String[] args) {
        int[] nums = new int[]{1, 2, 3};
        subSet(nums);
        System.out.println(ans);
    }

    public static List<List<Integer>> subSet(int[] nums) {
        dfs(0, nums);
        return ans;
    }

    public static void dfs(int cur, int[] nums) {
        if (cur == nums.length) {
            ans.add(new ArrayList<>(t));
            return;
        }
        t.add(nums[cur]);
        dfs(cur + 1, nums);
        t.remove(t.size() - 1);
        dfs(cur + 1, nums);
    }

}

三.复杂度分析

时间复杂度:O(n*2^n) 。一共 2 ^ n 个状态,每种状态需要 O(n) 的时间来构造子集。

空间复杂度:O(n)。临时数组 t 的空间代价是 O(n),递归时栈空间的代价为 O(n)。

以上是关于leetcode78子集的主要内容,如果未能解决你的问题,请参考以下文章

精选力扣500题 第61题 LeetCode 78. 子集c++/java详细题解

leetcode78 子集(Medium)

LeetCode:78. 子集90. 子集 II

[LeetCode] 78. 子集

Leetcode 78.子集

leetcode 78. 子集