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) 与时间复杂度分析角度一致