class Solution(object):
def largestRectangleArea(self, heights):
"""
:type heights: List[int]
:rtype: int
"""
ans=0
heights.append(0)
stack=[]
stack.append((0,-1))#(value,position)
Len=len(heights)
for i in range(Len):
top=stack[-1]
if heights[i]>top[0]:
stack.append((heights[i],i))
elif heights[i]<top[0]:
while(heights[i]<stack[-1][0]):
ans=max((i-stack[-1][1])*stack[-1][0],ans)
p=stack[-1][1]
stack.pop()
stack.append((heights[i],p))
return ans
LeetCode-84-Largest Rectangle in Histogram 经典题目,单调栈
最新推荐文章于 2022-05-22 13:02:44 发布