找出一个集合的子集
利用递归的思想,用python的set方法完成,找到每次去掉一个元素的所有子集,
例如 {1,2,3} 它的子集是{{1}, {2}, {3}, {1,2}, {1,3}, {2,3}},
从最基本的情况开始考虑,当 {1} 时,它的子集是 {{}, {1}}
那么考虑递归缩小问题范围,有集合{1,2,3,4,....,x},那么将第一个数拿出来,找到{2,3,4,....,x}的所有子集
再把第一个数放回去,就可以得到原本集合{1,2,3,4....x}的所有子集了。
代码如下
def subsets(self, nums: List[int]) -> List[List[int]]: if len(nums) == 0: return [[]] if len(nums) == 1: return [nums, []] subset = self.subsets(nums[1:]) res = [i for i in subset] + [s+[nums[0]] for s in subset] return res