leetcode78_子集

给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。

说明:解集不能包含重复的子集。

示例:

输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]

这种需要告知具体路径的,就不能用动态规划了,只能回溯
1, 以当前位置为源流往下摸排所有可以跳到的位置
2, 最终递归返回源流位置
3, 然后再以下面一个位置作为源流位置,重复上述操作

class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        result = []
        search = []
        self._dfs(nums, 0, search, result)
        return result
    
    def _dfs(self, nums, index, search, result):
        result.append(search.copy())
        for i in range(index, len(nums)):
            # 以当前位置为源流
            search.append(nums[i]) 
            # 往下摸排所有可以跳到的位置 
            self._dfs(nums, i + 1, search, result)
            # 最终递归返回源流位置,然后再以下面一个位置作为源流位置,重复上述操作
            search.pop()
发布了36 篇原创文章 · 获赞 18 · 访问量 6524

猜你喜欢

转载自blog.csdn.net/weixin_40027284/article/details/104820482