题目描述:
题解一:
与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博客