Leetcodeの完全な順列問題の再帰的解決(バックトラッキング)

https://leetcode-cn.com/problems/permutations/

繰り返し番号のないシーケンスが与えられた場合、可能なすべての順列を返します。

例:

入力:[1,2,3]
出力:
[
  [1,2,3
  ]、
  [1,3,2]、
  [2,1,3]、
  [2,3,1 ]、[3,1,2 ]、
  [3,2,1]
]

class Solution:
    def permute(self,nums) :
        if len(nums)==1 :
            return [nums]  #注意是[[]] 与n>1时保持一致因为后面有个for j in permute
        res=[]
        for i in range(len(nums)):
            tmp =nums[:i]+nums[i+1:]
            for j in self.permute(tmp):
                res.append([nums[i]]+j)
        return res      #体会递归思维 结果是[[],[],[]]上面与此保持一致

おすすめ

転載: blog.csdn.net/yu1336199790/article/details/107921378