Given a set of distinct integers, nums, return all possible subsets (the power set).
Note: The solution set must not contain duplicate subsets.
Example:
Input: nums = [1,2,3] Output: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
统计所有子集。
用递归的方法比较简单,但是我没想出来。。
注意起始的final是二维数组。过程有点像搭积木(倾斜)。
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
final=[[]]
for num in nums:
final+=[item+[num] for item in final]
return final
再有就是用dfs的方法。
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
final=[]
def dfs(path, index):
final.append(path)
for i in range(index,len(nums)):
dfs(path+[nums[i]], i+1)
dfs([], 0)
return final

本文详细解析了如何使用递归和深度优先搜索(DFS)方法来生成一个整数数组的所有可能子集(幂集),并确保解决方案中不包含重复的子集。通过具体实例,如输入数组[1,2,3],展示了两种方法的具体实现过程。
486

被折叠的 条评论
为什么被折叠?



