给定一个 没有重复 数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3]
输出:
[ [1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1] ]
解法1: 直接调用库函数:
def permute(self, nums: List[int]) -> List[List[int]]:
return list(itertools.permutations(nums))
解法2: 回溯算法:
class Solution(object):
def permute(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
ans=[]
def recursion(nums,res):
if not nums:
ans.append(res)
return
else:
for i in range(len(nums)):
recursion(nums[:i]+nums[i+1:],res+[nums[i]])
recursion(nums,[])
return ans