给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
思路:
使用回朔法
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
ans = [[]]
for i in nums:
for j in range(len(ans)):
ans.append(ans[j]+[i])
return ans
单步分析
定义一个ans[[]]
当nums=[[]]
ans = [[]]
当i=1,ans=[[]], len(ans)=1
j=0, ans.append(ans[0]+[1]), ans=[[],[1]]
当i=2,ans=[[],[1]], len(ans)=2
j=0, ans.append(ans[0]+[2]), ans=[[],[1],[2]]
j=1, ans.append(ans[1]+[2]), ans=[[],[1],[2],[1,2]]