原题
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]
]
My Answer
思路分析
本题直接采用回溯算法。
class Solution:
def permute(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
Solution.res = []
temp_list = []
self.backtrack(nums, temp_list)
return Solution.res
def backtrack(self, nums, temp_list):
if len(temp_list) == len(nums):
Solution.res.append(temp_list[:])
return
if len(temp_list) > len(nums):
return
for i in range(len(nums)):
if nums[i] not in temp_list:
temp_list.append(nums[i])
self.backtrack(nums, temp_list)
temp_list.pop()
反思:
- 要学会利用好回溯;