zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    寒假学习报告05
    寒假学习报告04
    微信推送信息,支付宝支付接口
    Vue组件生成依赖文件,contentype
    redis之列表字典操作
    drf版本控制redis基础
    drf分页器,url控制器,解析器,响应器
    drf认证权限频率
    drf视图认证组件
    drf序列化组件
  • 原文地址:https://www.cnblogs.com/xxswkl/p/11963323.html
Copyright © 2011-2022 走看看