leetcode题解46:全排列 发表于 2022-07-16 分类于 算法 阅读次数: 本文字数: 396 阅读时长 ≈ 1 分钟 描述 该题来自于力扣第46题 分析 子问题分解,比如说要排列1 2 3,那就先取1,全排列2 3,得到1 2 3和1 3 2,依次下去,直到取完所有的数字。相当于全排列n个数,可以先求n-1个数的全排列,分解成一个子问题,显然用递归求解非常简单。 至于代码上的编写技巧,非python,取第i个数时,可以先与第0个数交换,然后排列数组的后n-1位,最后再交换回来就可以了。 代码 python 123456789class Solution: def permute(self, nums: List[int]) -> List[List[int]]: if len(nums) == 1: return [nums] res = [] for i in range(len(nums)): for subres in self.permute(nums[:i] + nums[i+1:]): res.append([nums[i]] + subres) return res 相关文章 leetcode题解37:解数独 leetcode题解39:组合总数 leetcode题解40:组合数II leetcode题解47:全排列 II leetcode题解78:子集