2865.美丽塔I
链接:2865.美丽塔I
难度:Medium
标签:栈、数组、单调栈
简介:请你返回满足 美丽塔 要求的方案中,高度和的最大值 。
题解 1 - python
- 编辑时间:2024-01-24
- 执行用时:41ms
- 内存消耗:16.82MB
- 编程语言:python
- 解法介绍:单调栈。
class Solution:
def maximumSumOfHeights(self, maxHeights: List[int]) -> int:
n = len(maxHeights)
s = []
larr = [-1] * n
rarr = [n] * n
for i in range(n):
while s and maxHeights[s[-1]] >= maxHeights[i]: rarr[s.pop()] = i
if s: larr[i] = s[-1]
s.append(i)
lh = [0] * (n + 2)
rh = [0] * (n + 2)
for i in range(n):
lh[i + 1] = maxHeights[i] * (i - larr[i]) + lh[larr[i] + 1]
for i in range(n - 1, -1, -1):
rh[i + 1] = maxHeights[i] * (rarr[i] - i) + rh[rarr[i] + 1]
return max(lh[i + 1] + rh[i + 1] - maxHeights[i] for i in range(n))