代码随想录算法训练营Day60 | 单调栈(3/3) LeetCode 84.柱状图中最大的矩形

今天就是训练的最后一天了,刷满60天,感觉很有成就感!

84. Largest Rectangle in Histogram

Given an array of integers heights representing the histogram's bar height where the width of each bar is 1, return the area of the largest rectangle in the histogram.

用单调栈的思路来解这道题,本题是要找每个柱子左右两边第一个小于该柱子的柱子,所以从栈头(元素从栈头弹出)到栈底的顺序应该是从大到小的顺序。栈顶和栈顶的下一个元素以及要入栈的三个元素组成了我们要求最大面积的高度和宽度。

python 复制代码
class Solution:
    def largestRectangleArea(self, heights: List[int]) -> int:
        heights.insert(0, 0)
        heights.append(0)
        stack = [0]
        result = 0
        for i in range(1, len(heights)):
            while stack and heights[i] < heights[stack[-1]]:
                mid_height = heights[stack[-1]]
                stack.pop()
                if stack:
                    # area = width * height
                    area = (i - stack[-1] - 1) * mid_height
                    result = max(area, result)
            stack.append(i)
        return result
相关推荐
再难也得平11 分钟前
[LeetCode刷题]1.两数之和(java题解)
java·算法·leetcode
踩坑记录16 分钟前
leetcode hot100 39. 组合总和 medium 递归回溯
leetcode
皮卡蛋炒饭.17 分钟前
钻石收集者&是7倍数的最长子序列&Zuma
数据结构·算法·排序算法
plus4s17 分钟前
2月20日(88-90题)
算法
仰泳的熊猫19 分钟前
题目1529:蓝桥杯算法提高VIP-摆花
数据结构·c++·算法·蓝桥杯
陆嵩24 分钟前
CG 方法(共轭梯度)的数学推导及其算法
算法·cg·共轭梯度·lanczos·arnoldi·正交化·gram-schmidt
twilight_46925 分钟前
机器学习与模式识别——SVM
算法·机器学习·支持向量机
小糯米60132 分钟前
C++ 树
数据结构·c++·算法
liliangcsdn1 小时前
IMPALA强化学习算法的学习和解读
学习·算法
再难也得平1 小时前
[LeetCode刷题]283.移动零(通俗易懂的java题解)
java·算法·leetcode