leetcode算法题求--全排列的求解

    科技2022-08-05  117

    全排列(中等难度)

    题目描述暴力法(调用itertool库)迭代法

    题目描述

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

    暴力法(调用itertool库)

    class Solution(object): def permute(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ return list(itertools.permutations(nums,len(nums))) permutations就是将nums数组中的元素,进行全排列 permutations(p[,r]);返回p中任意取r个元素做排列的元组的迭代器

    迭代法

    官方文档

    class Solution: def permute(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ def backtrack(first = 0): # 所有数都填完了 if first == n: res.append(nums[:]) for i in range(first, n): # 动态维护数组 nums[first], nums[i] = nums[i], nums[first] # 继续递归填下一个数 backtrack(first + 1) # 撤销操作 nums[first], nums[i] = nums[i], nums[first] n = len(nums) res = [] backtrack() return res
    Processed: 0.040, SQL: 8