[47][中等][回溯] 全排列 II
题目描述
输入:nums = [1,1,2]
输出:
[[1,1,2],
[1,2,1],
[2,1,1]]输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]解题思路
最后更新于
输入:nums = [1,1,2]
输出:
[[1,1,2],
[1,2,1],
[2,1,1]]输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]最后更新于
class Solution:
def permuteUnique(self, nums: List[int]) -> List[List[int]]:
def dfs(path, residual):
if len(residual) == 0:
results.append(path[:])
seen = set()
for i, num in enumerate(residual):
if num not in seen:
seen.add(num)
path.append(num)
dfs(path, residual[:i] + residual[i + 1:])
path.pop()
results = []
dfs([], nums)
return results