数据结构类型:栈
时间复杂度:O(N)
空间复杂度:O(N)
代码实现:
class Solution:
def largestRectangleArea(self, heights: List[int]) -> int:
stack = []
area = 0
for i in range(len(heights)):
index = i
while stack and stack[-1][1] > heights[i]:
last_i, last_h = stack.pop()
index = last_i
area = max(area, last_h * (i - last_i))
stack.append([index, heights[i]])
for i, h in stack:
area = max(area, (len(heights) - i) * h)
return area
本文介绍了一种使用栈数据结构解决最大矩形面积问题的算法,时间复杂度为O(N),空间复杂度也为O(N)。代码中通过遍历高度数组,维护栈来找出每个位置形成的最大高度为1的矩形。
469





