题目:给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。
来源:https://leetcode-cn.com/problems/subsets/
法一:自己的代码
思路:本题无需剪枝,直接回溯,关键是要确定好每次要遍历的元素
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
from typing import List class Solution: def subsets(self, nums: List[int]) -> List[List[int]]: results = [] l = len(nums) def backtrack(a=[], nums=nums, count=0): # 如果够了回溯深度了,说明到底了,把值存储后返回 if count == l: results.append(a[:]) return # 这里是关键,要先画图确定好每次回溯遍历的元素, # 因为这个最后实际上类似一个二叉树,所以每次只遍历一个元素 for i in [nums[count]]: # 先压栈一次,进行回溯 a.append(i) count += 1 backtrack(a, count=count) # 再出栈一次,进行回溯,每个元素都是这样 a.pop() backtrack(a, count=count) backtrack() return results if __name__ == '__main__': duixiang = Solution() a = duixiang.subsets([1,2,3]) print(a)