全排列

    xiaoxiao2023-10-29  160

    给定一个没有重复数字的序列,返回其所有可能的全排列。 示例: 输入: [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: List[int]) -> List[List[int]]: # if not nums:return [[]] # result=[] # for i in range(len(nums)): # for j in self.permute(nums[:i]+nums[i+1:]): # result.append([nums[i]]+j) # return result if not nums:return [] n=len(nums) result=[] def helper(nums,temp): if not nums: result.append(temp) return for i in range(len(nums)): helper(nums[:i]+nums[i+1:],temp+[nums[i]]) helper(nums,[]) return result

    注释与未注释部分均可实现该算法,未注释部分开辟了一个新的临时变量temp用于存储每次遍历完后形成的子列表。

    最新回复(0)