题目描述
题解思路
初始化一个nums中元素是否被访问的数组used、记录还需要递归的深度deep
遍历nums
如果当前元素被访问过或者当前元素等于前一个元素且前一个元素没被访问过就跳过该次遍历
否则选择当前元素,继续递归
直到deep为0,将此次递归选择的数组加入到结果集,退出递归文章来源:https://www.toymoban.com/news/detail-806605.html
直到搜索完成,返回结果集文章来源地址https://www.toymoban.com/news/detail-806605.html
题解代码
class Solution:
def permuteUnique(self, nums: List[int]) -> List[List[int]]:
nums.sort()
n = len(nums)
deep = n
res = []
tmp = []
used = [False for _ in range(n)]
def dfs():
nonlocal deep
if deep == 0:
res.append([num for num in tmp])
return
for i in range(n):
num = nums[i]
if used[i] or (i > 0 and num == nums[i-1] and used[i-1] == False):
continue
used[i] = True
tmp.append(num)
deep -= 1
dfs()
deep += 1
tmp.pop()
used[i] = False
dfs()
return res
到了这里,关于LeetCode讲解篇之47. 全排列 II的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!