zoukankan      html  css  js  c++  java
  • 46. 全排列

    给定一个没有重复数字的序列,返回其所有可能的全排列。

    本来我是想学之前的T62 有限路径 T89 格雷编码 那种选择有限的递归,但是我发现我不太会返回,自己写的递归还是有欠缺,还是去看答案

    答案跟我之前写的一样,可能我有些细节不太行把,先把答案放过来

    ****************************************************************

    class Solution:
        def permute(self, nums: List[int]) -> List[List[int]]:
            res  = []
            def helper(cur,nums):
                if not nums:
                    res.append(cur)
                    return
                for i in range(len(nums)):
                    helper(cur + [nums[i]],nums[:i]+nums[i+1:])
            helper([],nums)
            return res
     
    ******************************************************************

    我终于知道我哪里错了,就是加粗的地方,原来我写的是

    curList = helper(cur+ [nums[i]], nums[:i] + nums[i+1:])

    仔细想想,之前的回溯算法也都是直接 调用helper函数 ,没有把函数赋值,难怪一直报错

    底层:

      如果用完nums里的元素,则添加到res

      if not nums:

        res.append(curList)

        return

    顶层:

      把没加入curList的元素全部遍历一遍,每层都全加一次,这样就比我之前自己写的每次还要判断要好。

      for i in range(len(nums)):

        helper(curList + [nums[i]], nums[:i] + nums[i+1:])

  • 相关阅读:
    LIBTIFF 配置 (vs2010 + win8 + 32位 )
    minGW、cygwin、gnuwin32 介绍
    LabVIEW发布功能总结
    LabVIEW新手5大错误
    专业功放测试:主要性能指标&信噪比测量
    常用低压电器的主要种类和用途
    LabVIEW是一种通用的编程语言吗?
    LabVIEW TCP/IP 断开重连问题
    LabVIEW 的bool(布尔)按键机械属性
    LabVIEW 远程控制VI
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/12238867.html
Copyright © 2011-2022 走看看