代码随想录算法训练营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
相关推荐
CS创新实验室19 小时前
算法、齿轮与硅基大脑:数值计算发展简史
人工智能·算法·数值计算
海石20 小时前
1563分的简单题,可能就简单在能被暴力AC
算法·leetcode
海石21 小时前
1400分的dp汗流浃背之【交替子数组计数】
算法·leetcode
奋发向前wcx21 小时前
P2590 树的统计 题目解析
数据结构·算法·深度优先
imbackneverdie21 小时前
AI4S不止于分子药物:以MedPeer为代表的科研基建打开产业新增量
大数据·人工智能·算法·aigc·科研·学术·ai 4s
额鹅恶饿呃1 天前
C语言中的数据结构和变量
c语言·数据结构·算法
运行时记录1 天前
prompt-optimizer skill
算法
万法若空1 天前
【数据结构-哈希表】哈希表原理
数据结构·算法·散列表
退休倒计时1 天前
【每日一题】LeetCode 437. 路径总和 III TypeScript
算法·leetcode·typescript
学逆向的1 天前
汇编——内存
开发语言·汇编·算法·网络安全