领扣算法46:全排列

2019-08-13  本文已影响0人  领带衬有黄金
给定一个没有重复数字的序列,返回其所有可能的全排列。

 示例:

输入: [1, 2, 3]
输出:
 [
   [1, 2, 3],
    [1, 3, 2],
    [2, 1, 3],
    [2, 3, 1],
    [3, 1, 2],
    [3, 2, 1]
]

回溯算法

def permute(nums: list) -> list:
    res = []

    def backtrack(nums, tmp):
        if not nums:
            res.append(tmp)
            return
        for i in range(len(nums)):
            backtrack(nums[:i] + nums[i + 1:], tmp + [nums[i]])

    backtrack(nums, [])
    return res


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

第三方包的使用

import itertools
def permute(nums) -> list:
    return [list(i) for i in list(itertools.permutations(nums))]


print(permute([1, 2, 3]))
上一篇下一篇

猜你喜欢

热点阅读