题目描述:
给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入:[1,2,3]
输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
思路介绍:使用递归对每一个位置进行遍历,以当前示例为例:刚开始我们的nums_all为[1,2,3],而temp为[],我们第一次使用back函数时进入for循环会分别执行back([2,3],[1]),back([1,3],[2])和back([1,2],[3]),之后分为三个分支再继续进行back函数的递归调用,直到back函数的第一个位置为空,则将得到的该结果添加到res中以便最后输出
class Solution(object):
def permute(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
res = []
def back(nums_all,temp):
if len(nums_all) == 0:
res.append(temp)
return
for i in range(len(nums_all)):
back(nums_all[:i]+nums_all[i+1:],temp+[nums_all[i]])
t = []
back(nums,t)
return res
菜鸟一枚,代码仅供参考,如有问题,望指正~