Delivering Boxes from Storage to Ports LeetCode solution in Python

1
from sortedcontainers import SortedList as MonoQueue
2

3

4
class Solution:
5
def boxDelivering(self, A, __, B, W):
6
n = len(A)
7

8
def slidingWindow():
9
l = 0
10
cW = 0
11
for r in range(n):
12
cW += A[r][1]
13
while cW > W or r - l + 1 > B:
14
cW -= A[l][1]
15
l += 1
16
yield l, r
17

18
Seg = MonoQueue(key=lambda t: t[1])
19
addAll = 0
20
olddp = 0
21
for l, r in slidingWindow():
22
if r != 0:
23
addAll += A[r][0] != A[r - 1][0]
24
Seg.add((r, olddp - addAll + 2))
25
while Seg[0][0] < l:
26
Seg.pop(0)
27
olddp = Seg[0][1] + addAll
28
return olddp

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0