Skip to content

Latest commit

 

History

History
39 lines (34 loc) · 917 Bytes

47_permutations_two.md

File metadata and controls

39 lines (34 loc) · 917 Bytes

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]]

Solution

from collections import Counter


class Solution:
    def permuteUnique(self, nums: List[int]) -> List[List[int]]:
        def backtrack(out):
            if len(out) == len(nums):
                pems.append(out)
                return
            for key in c:
                if c[key]:
                    c[key] -= 1
                    backtrack(out + [key])
                    c[key] += 1

        pems = []
        c = Counter(nums)
        backtrack([])
        return pems