78子集

Posted xxswkl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了78子集相关的知识,希望对你有一定的参考价值。

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

来源:https://leetcode-cn.com/problems/subsets/

法一:自己的代码

思路:本题无需剪枝,直接回溯,关键是要确定好每次要遍历的元素

技术图片
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)
View Code

 

 

以上是关于78子集的主要内容,如果未能解决你的问题,请参考以下文章

78子集

[leetcode] 78. 子集

[LeetCode] 78. 子集 ☆☆☆(回溯)

78. 子集

精选力扣500题 第61题 LeetCode 78. 子集c++/java详细题解

[算法题解详细]DFS解力扣78子集