代码随想录算法训练营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
相关推荐
Omics Pro7 分钟前
经典多组学整合算法→商用云平台
数据库·人工智能·算法·机器学习·自然语言处理
ting945200013 分钟前
深度拆解|1752vc Pitch Deck Analyzer 底层技术架构与核心算法原理
人工智能·算法·架构
yuanxi20015 分钟前
中国汽车企业欧洲网点扩张:大客户销售的关系力启示
职场和发展·汽车·创业创新·学习方法
贾斯汀frank20 分钟前
基于 Java + Playwright 实现网站自动访问与数据采集
算法
早睡早起不秃头&21 分钟前
【架构】- 移动机器人系统的插件化:让定位算法独立演进
算法·架构
mmmmath_31 小时前
LeetCode.020.有效的括号
数据结构·算法·leetcode
Doubbbbbbble云1 小时前
算法优化中的数学建模与理论界限分析4
算法·数学建模
垆边人似月.1 小时前
华为机考题:字符个数统计
数据结构·算法·华为
en.en..1 小时前
Linux 进程退出exit(函数)
java·开发语言·算法
All for pursuit.2 小时前
【回溯-2】22.括号生成
数据结构·c++·算法·leetcode