46. Permutations
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]
]
Solution: DFS
class Solution(object):
def permute(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
used = [False] * len(nums)
permutations = []
permutation = []
def dfs():
if len(permutation) == len(nums):
permutations.append(permutation[:])
return
for idx, num in enumerate(nums):
if used[idx]:
continue
used[idx] = True
permutation.append(num)
dfs()
permutation.pop()
used[idx] = False
dfs()
return permutations