給定一個沒有重複數字的序列,返回其所有可能的全排列。
示例:
輸入: [1,2,3]
輸出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
思路:[1,2,3,4]=([1,2,3]+4) = [4,1,2,3]+[1,4,2,3]+[1,2,4,3]+[1,2,3,4]
[1,2,3] =([1,2]+3) = [3,1,2]+[1,3,2]+[1,2,3]
由此可知採用遞歸求解
代碼:
class Solution(object):
def permute(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
if len(nums)==1:
return [nums]
mylist=self.permute(nums[1:])
l=len(mylist)
k=len(mylist[0])
for i in range(l):
for j in range(k):
mylist.append(mylist[i][0:j]+[nums[0]]+mylist[i][j:])
mylist[i]=mylist[i]+[nums[0]]
return mylist
a=Solution()
print a.permute([1,2,3])