Distribute Repeating Integers LeetCode solution in Python

1
from collections import Counter, defaultdict
2

3

4
class Solution:
5
def canDistribute(self, nums: List[int], quantity: List[int]) -> bool:
6
quantity.sort(reverse=True)
7
freqCounts = defaultdict(int, Counter(Counter(nums).values()))
8

9
def backtrack(i: int = 0) -> bool:
10
if i == len(quantity):
11
return True
12

13
for freq, count in list(freqCounts.items()):
14
if freq >= quantity[i] and count > 0:
15
freqCounts[freq] -= 1
16
freqCounts[freq - quantity[i]] += 1
17
if backtrack(i + 1):
18
return True
19
freqCounts[freq] += 1
20
freqCounts[freq - quantity[i]] -= 1
21

22
return False
23

24
return backtrack()

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0