-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path47_Permutations_II.py
More file actions
37 lines (28 loc) · 943 Bytes
/
Copy path47_Permutations_II.py
File metadata and controls
37 lines (28 loc) · 943 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class Solution:
def permuteUnique(self, nums: List[int]) -> List[List[int]]:
self.res = []
counter = {}
for num in nums:
if num in counter:
counter[num] += 1
else:
counter[num] = 1
self.dfs(nums, [], counter)
return self.res
def dfs(self, nums: List[int], permutation: List[int], counter: dict[int, int]):
if counter == {}:
self.res.append(permutation.copy())
for num in set(nums):
if num in counter:
counter[num] -= 1
if counter[num] == 0:
counter.pop(num, None)
else:
continue
permutation.append(num)
self.dfs(nums, permutation, counter)
if num in counter:
counter[num] += 1
else:
counter[num] = 1
permutation.pop()