原題
給定一個(gè)數(shù)字列表酷愧,返回其所有可能的排列驾诈。
給出一個(gè)列表[1,2,3],其全排列為:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
解題思路
- 與subset題相似溶浴,只不過當(dāng)
len(path) == len(list)
的時(shí)候才會(huì)將path加入到結(jié)果 - 對(duì)于每一層乍迄,遍歷list中的元素,把不在path中的元素加入path
完整代碼
class Solution(object):
def permute(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
if nums is None:
return []
result = []
self.helper(nums, [], result)
return result
def helper(self, List, path, result):
if len(path) == len(List):
result.append(path[:])
return
for i in range(len(List)):
if List[i] in path:
continue
path.append(List[i])
self.helper(List, path, result)
path.pop()