码迷,mamicode.com
首页 > 其他好文 > 详细

78子集

时间:2019-11-30 17:41:26      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:on()   backtrac   class   result   style   imp   event   bsp   数组   

题目:给定一组不含重复元素的整数数组 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子集

标签:on()   backtrac   class   result   style   imp   event   bsp   数组   

原文地址:https://www.cnblogs.com/xxswkl/p/11963323.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!