Distant Barcodes LeetCode solution in Python

1
# Runtime: 1287 ms (Top 5.56%) | Memory: 16.2 MB (Top 67.41%)
2

3
import heapq
4

5

6
class Solution:
7

8
def rearrangeBarcodes(self, barcodes: List[int]) -> List[int]:
9
barcodes_counter = Counter(barcodes)
10
if len(barcodes_counter) == len(barcodes):
11
return barcodes
12

13
barcodes_heapq = [(-c, b) for b, c in barcodes_counter.items()]
14
heapq.heapify(barcodes_heapq)
15

16
idx, prev_count, prev_barcode = 0, 0, 0
17
while barcodes_heapq:
18
(curr_count, curr_barcode) = heapq.heappop(barcodes_heapq)
19

20
barcodes[idx] = curr_barcode
21
idx += 1
22
curr_count += 1
23

24
if prev_count:
25
heapq.heappush(barcodes_heapq, (prev_count, prev_barcode))
26

27
prev_count, prev_barcode = curr_count, curr_barcode
28

29
return barcodes

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0