class Solution:
def largestRectangleArea(self, heights: List[int]) -> int:
heights = [0] + heights + [0]
ans, stack = 0, [] # (idx, height)
for idx, height in enumerate(heights):
while stack and height < stack[-1][1]:
pre_idx, pre_height = stack.pop()
ans = max(ans, (idx - stack[-1][0] - 1) * pre_height) # 新遍历到的,与再前一个,夹逼一下
stack.append((idx, height))
return ans
Leetcode-84 柱状图中最大的矩形
最新推荐文章于 2024-10-08 10:36:00 发布