题目
Given a collection of distinct integers, return all possible permutations.
Example:
Input: [1,2,3]
Output:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
回溯法
回溯法也称为树的深度优先遍历。
树的深度优先遍历思想,就是遍历到不满足条件时返回访问其他节点。
本题也可看作树的深度优先遍历进行访问得到全排列。
python代码
class Solution(object):
def permute(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
self.res = []
track = []
self.backtrack(nums,track)
return self.res
def backtrack(self,nums,track):
if len(track) == len(nums):
self.res.append(track[:])
for i in range(len(nums)):
if nums[i] in track:
continue
track.append(nums[i])
self.backtrack(nums,track)
track.remove(nums[i])