【Leetcode】78. 子集(Subsets)

No78. 子集

题目

给你一个整数数组 nums ,返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。

示例1

  • 输入:nums = [1,2,3]
  • 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]

示例2

  • 输入:nums = [0]
  • 输出:[[],[0]]

思路:

将采用迭代的方法,每次将一个元素分别添入res的每个集合中。

解题代码(Python3)

class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        res = [[]]
        for x in nums:
            res += [y + [x] for y in res]
        return res

复杂度分析:

  • 时间复杂度O(n2^n) 外层循环是n,内层循环元素是否存在的可能性有2n
  • 空间复杂度O(n*2^n) 与时间复杂度分析角度一致

运行结果:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Xiao_Spring/article/details/113747812