Given a collection of numbers, nums, that might contain duplicates, return all possible unique permutations in any order.
Example 1: Input: nums = [1,1,2] Output: [[1,1,2], [1,2,1], [2,1,1]] Example 2: Input: nums = [1,2,3] Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
- code
class Solution:
def permuteUnique(self, nums: List[int]) -> List[List[int]]:
def dfs(nums, cur, res):
if not nums:
res.append(cur)
return
visited = set()
for i,num in enumerate(nums):
if num not in visited:
visited.add(num)
# cur.append(num) wrong position to update!
dfs(nums[:i]+nums[i+1:], cur+[num], res)
res = []
dfs(nums, [], res)
return res