题目:84. Largest Rectangle in Histogram
题目链接:https://leetcode.com/problems/largest-rectangle-in-histogram/description/
题目意思是找到条形图中面积最大的矩形。用一个栈来保存递增的长度,当前位置的长度如果大于栈顶元素长度则入栈,否则退栈并计算面积,直到栈顶元素长度小于当前长度。代码里面碰到个bug,后来在heights数组最后面直接加了一个0过了,表示最后一块长度为0,心塞。
python:
class Solution(object):
def largestRectangleArea(self, heights):
"""
:type heights: List[int]
:rtype: int
"""
if heights==[]:
return 0
if len(heights)==1:
return heights[0]
heights.append(0)
stack=[0]
res=0
for i in range(1,len(heights)):
if len(stack) == 0:
stack.append(i)
continue
while heights[i]<heights[stack[-1]]:
if len(stack) != 0:
h=heights[stack.pop()]
w=i
if len(stack)!=0:
w=i-stack[-1]-1
res=max(res,h*w)
if len(stack) == 0:
break
stack.append(i)
return res