46 全排列
解答:
class Solution(object):
def permute(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
res = []
self.getpermutation(nums, res, [])
return res
def getpermutation(self, nums, res, perlist):
if len(perlist) == len(nums):
res.append(perlist[:])
return res
for num in nums:
if num in perlist:
continue
perlist.append(num)
self.getpermutation(nums, res, perlist)
perlist.remove(num)
回溯法
res.append(perlist[:])可以解决引用传递的问题
47 全排列2
可以看作下标的不重复全排列
class Solution(object):
def permuteUnique(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
res = []
self.getpermute(nums, res, [])
return res
def getpermute(self,nums,res, perlist):
if len(perlist) == len(nums):
permute = [nums[i] for i in perlist]
if permute not in res:
res.append(permute)
return
for ind in range(len(nums)):
if ind in perlist:
continue
perlist.append(ind)
self.getpermute(nums,res, perlist)
perlist.remove(ind)