美文网首页
领扣算法46:全排列

领扣算法46:全排列

作者: 领带衬有黄金 | 来源:发表于2019-08-13 18:28 被阅读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]))
    

    相关文章

      网友评论

          本文标题:领扣算法46:全排列

          本文链接:https://www.haomeiwen.com/subject/vuobjctx.html