代码随想录算法训练营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
相关推荐
m0_715575343 小时前
分布式任务调度系统
开发语言·c++·算法
测试涛叔3 小时前
金三银四软件测试面试题(800道)
软件测试·面试·职场和发展
naruto_lnq4 小时前
泛型编程与STL设计思想
开发语言·c++·算法
踩坑记录4 小时前
leetcode hot100 94. 二叉树的中序遍历 easy 递归 dfs
leetcode
zxsz_com_cn4 小时前
设备预测性维护算法分类及优劣势分析,选型指南来了
算法·分类·数据挖掘
Angelina_Jolie4 小时前
一文搞懂 SCI、SSCI、CSSCI、C 刊、核心期刊:定义、作用、层级对比及投稿选择
考研·职场和发展·创业创新
m0_748708054 小时前
C++中的观察者模式实战
开发语言·c++·算法
然哥依旧4 小时前
【轴承故障诊断】基于融合鱼鹰和柯西变异的麻雀优化算法OCSSA-VMD-CNN-BILSTM轴承诊断研究【西储大学数据】(Matlab代码实现)
算法·支持向量机·matlab·cnn
qq_537562675 小时前
跨语言调用C++接口
开发语言·c++·算法