leetcode-46. 全排列--回溯算法--python

Posted Python_Heaven

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-46. 全排列--回溯算法--python相关的知识,希望对你有一定的参考价值。

全排列问题
使用回溯算法解决
思路:定义res列表存放最后的结果
定义track列表构建排列存放每次的排列
在backtrack函数中,for循环中
1.满足条件,加入res,
2.做选择:track.append(nums[i])
3.回溯函数:backtrack(nums, track)
4. 撤销选择:track.pop()

def permute(nums):
    res = []
    track = []
    len_nums = len(nums)
    def backtrack(nums, track):
        if len(track) == len_nums:
            res.append(track.copy())
            return
        for i in range(len_nums):
            if nums[i] in track:
                continue
            track.append(nums[i])
            backtrack(nums, track)
            track.pop()
    backtrack(nums, track)
    return res

nums  = [1, 2, 3]
print(permute(nums))


这里之前用的track,但是没有返回结果,使用track.copy()就正常输出。
track.copy()

以上是关于leetcode-46. 全排列--回溯算法--python的主要内容,如果未能解决你的问题,请参考以下文章

leetcode-46. 全排列--回溯算法--python

LeetCode 46. 全排列(回溯算法解决)

[LeetCode] 46. 全排列(回溯)

leetcode 46. 全排列----回溯篇5

LeetCode46全排列(回溯入门)

LeetCode46全排列(回溯入门)