代码随想录算法训练营第六十天|84. 柱状图中最大的矩形

代码随想录算法训练营第六十天|84. 柱状图中最大的矩形

题目

84.柱状图中最大的矩形

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。

求在该柱状图中,能够勾勒出来的矩形的最大面积。

class Solution:
    def largestRectangleArea(self, heights: List[int]) -> int:
        res = 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 stack and heights[i] < heights[stack[-1]]:
                    mid_height = stack[-1]
                    stack.pop()
                    if stack:
                        left_height = stack[-1]
                        right_height = i
                        h = heights[mid_height]
                        w = right_height - left_height - 1
                        res = max(res, h * w)
                stack.append(i)
        return res

你可能感兴趣的:(代码随想录,算法)