84. 柱状图中最大的矩形
解法一:贪心
class Solution:
def largestRectangleArea(self, heights: List[int]) -> int:
largest = 0
stack = []
heights.append(0)
for i in range(len(heights)):
while len(stack) > 0 and heights[stack[-1]] >= heights[i]:
h = heights[stack.pop()]
sidx = stack[-1] if len(stack) > 0 else -1 #矩形左边界
largest = max(largest, h * (i-sidx-1))
stack.append(i)
return largest最后更新于