代码随想录算法训练营第六十天|84.柱状图中最大的矩形
84.柱状图中最大的矩形
题目链接:柱状图中最大的矩形
找到左右更矮的那一条,然后从自己开始算最大面积(自己最长,所以算下来的第一个最大面积应该是他自己本身的面积,然后再往后。)
class Solution:
def largestRectangleArea(self, heights: List[int]) -> int:
heights.append(0)#看最后一条是不是
heights.insert(0,0)#看第一条是不是
stack = [0]
res = 0
h = [-1]*len(heights)
for i in range(1,len(heights)):
if heights[i] >= heights[stack[-1]]:
stack.append(i)
else:
while stack and heights[i] < heights[stack[-1]]:
# 第一次pop算出来的最大面积应该是他自己那条
mid = stack.pop()
if stack:
left = stack[-1]
right = i
w = right - left - 1
res = max(res, w*heights[mid])
stack.append(i)
return res