任务描述
- 给定一个没有重复数字的序列,返回其所有可能的全排列。
- 示例:
思路
- 两层循环嵌套,第一个循环选定开头的数字
- 第二个循环递归,并在nums[:i]+nums[i+1:]中选定后面的数字
遇到问题
- 输出为空,原因:递归时没有设置好跳出递归的条件
- 类型错误,
原因:代码中将 ans.append([nums[i]]+res)写成了 ans.append(nums[i])+res,造成类型不匹配
代码实现
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
if len(nums) < 2:
return [nums]
ans = [] # 初始化最后要返回的空列表
for i in range(len(nums)):
for res in self.permute(nums[:i]+nums[i+1:]):
ans.append([nums[i]] + res)
return ans