Hot-84 柱状图种最大的矩形
2026/8/4 21:23:10 网站建设 项目流程

解法:利用while循环判断是否应该让stack_top出栈、同时stack里面的相邻关系就是temperatures每日温度里面的相邻关系

from typing import List class Solution: def largestRectangleArea(self, heights: List[int]) -> int: # 在数组前后各加一个高度为 0 的柱子,方便处理边界 heights = [0] + heights + [0] stack = [] # 存储索引,栈内索引对应的高度是单调递增的 max_area = 0 for i in range(len(heights)): # 当前高度小于栈顶高度时,可以计算以栈顶高度为高的矩形面积 while stack and heights[i] < heights[stack[-1]]: height = heights[stack.pop()] # 当前栈顶是左边界,i 是右边界 width = i - stack[-1] - 1 max_area = max(max_area, height * width) stack.append(i) # 当前i比stack_top高的时候才入栈,反过来说,每次入栈的都是temperatures更高的 return max_area

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询