84柱状图中最大的矩形
class Solution:
def largestRectangleArea(self, heights: List[int]) -> int:
result = 0
heights.insert(0, 0)
heights.append(0)
stack = [0]
for i in range(1, len(heights)):
if heights[i] > heights[stack[-1]]:
stack.append(i)
elif heights[i] == heights[stack[-1]]:
stack.pop()
stack.append(i)
else:
while len(stack) > 1 and heights[i] < heights[stack[-1]]:
h = heights[stack[-1]]
stack.pop()
w_left = stack[-1]
w = i - w_left - 1
result = max(result, h * w)
stack.append(i)
return result