题目:
给定一个不含重复数字的数组 nums
,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
题目链接https://leetcode.cn/problems/permutations/description/
一、递归
注意在本函数中调用本函数,要用 self.函数
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
if len(nums) == 1:
return [nums]
else:
res = []
for i in range(len(nums)):
# 相当于把第i个放在最后一个,其他重新调用函数,完成递归
ans = self.permute(nums[:i] + nums[i+1:])
# ans就是其余数字的全排列
for l in ans:
# 在最后把第i个挂上
l.append(nums[i])
# 各个完整数组挂在res上
res.append(l)
return res
二、调用现成的库
import itertools
class Solution:
def permute(self, nums: List[int]):
return list(itertools.permutations(nums))
Python中的itertools模块是一个用于迭代工具的标准库。它包含了很多用于迭代处理的函数和生成器,可以让开发者更加方便地处理迭代任务。