题目描述:
题解一:
与46全排列相同,只是当depth=n,在path加入res之前进行一步判断,如果当前得到的path在res中不存在则添加。
class Solution(object):
def permuteUnique(self, nums):
n = len(nums)
used = [0 for i in range(n)]
depth = 0
res = []
path = []
def dfs(nums,n,depth,used,res,path):
if depth==n:
newpath = path[:]
if newpath not in res:
res.append(path)
return
for i in range(n):
if used[i]==0:
used[i]=1
path.append(nums[i])
dfs(nums,n,depth+1,used,res,path)
path.pop()
used[i] = 0
dfs(nums,n,depth,used,res,path)
return res
方法二:同一层不能选相同的数字
参考LeetCode 47. 全排列 II | Python_"大梦三千秋的博客-CSDN博客



