46. Permutations(Python3)
题目
Given a collection of distinct numbers, return all possible permutations.
For example,
[1,2,3] have the following permutations:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
解题方案
思路:
- 进行排列数,典型的DFS,其中要求上一次使用过的数字在接下来的过程中不能再出现
- 针对不能出现的情况,使用了切片来去除当前元素,至于pop、remove、del这些方法用起来很繁琐,而且容易出问题
代码:
class Solution:
def permute(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
def dfs(nums,path,res):
for i in range(len(nums)):
dfs(nums[:i]+nums[i+1:],path+[nums[i]],res)
if len(nums)==0:
res.append(path)
res = []
dfs(nums,[],res)
return res