Given a collection of distinct numbers, return all possible permutations.
For example,
[1,2,3]
have the following permutations:
1 2 3 4 5 6 7 8
| [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]
|
思路
我们可以利用递归的方法求解。
在helper函数里面,我们可以利用nums当作参数,每次取出一个数,nums里面的对应元素就删除,length也减去1。当length为0的时候,我们就可以把其中的一个结果给放在结果序列当中了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import copy class Solution(object): def permute(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ length = len(nums) self.ans = [] self.helper(nums, length, []) return self.ans def helper(self, nums, length, res): if (length): for i in nums: restmp = copy.copy(res) restmp.append(i) numtmp = copy.copy(nums) numtmp.remove(i) self.helper(numtmp, length - 1, restmp) else: self.ans.append(res)
|