Maximum Fruits Harvested After at Most K Steps LeetCode solution in Python

1
# Runtime: 5941 ms (Top 24.26%) | Memory: 59.9 MB (Top 86.39%)
2
class Solution:
3
def maxTotalFruits(self, fruits: List[List[int]], startPos: int, k: int) -> int:
4
arr = [0 for _ in range(2 * k + 1)]
5
for pos, numOfFruit in fruits:
6
if pos < startPos - k or pos > startPos + k:
7
continue
8
arr[pos - (startPos - k)] += numOfFruit
9

10
left, right = sum(arr[: k + 1]), sum(arr[k:])
11
maxSeen = max(left, right)
12

13
turn = 1 # turning point
14
for i in range(2, k + 1, 2):
15
left = left - arr[i - 2] - arr[i - 1] + arr[k + turn]
16
right = right - arr[~(i - 2)] - arr[~(i - 1)] + arr[k - turn]
17
maxSeen = max(maxSeen, left, right)
18
turn += 1
19

20
return maxSeen

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0