给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
输入:nums = [1,2,3]
输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
n = len(nums)
res = []
#将要遍历的数组中元素索引
ind = 0
#当前组合
cur = []
#构造递归
def dfs(ind, cur):
#递归终止条件
if ind == n:
res.append(cur)
return
#情况1
dfs(ind+1, cur+[nums[ind]])
#情况2
dfs(ind+1, cur)
#调用递归
dfs(ind, cur)
#返回要优化的目标
return res