题目:
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
python代码:
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
res=[[]]
for i in nums:
res=res+[[i]+num for num in res]
return res
思路:
迭代法
假定输入集合为nums(1, 2, 3),不重复的全部子集集合为subsets,流程如下:
没添加任何数字时,因为空集合是所有集合的子集,所以默认包含空子集。subsets = {[]},
添加数字1时,因为subsets中的空子集和1拼接形成集合[1],再添加进subsets 。subsets = {[], [1]}
添加数字2时,空子集与2拼接形成[2],子集[1]与2拼接形成[1, 2],再添加进subsets。subsets = {[], [1], [2], [1, 2]}
添加数字3流程同上。subsets = {[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]}