代码随想录算法训练营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
相关推荐
abant25 分钟前
leetcode 739 单调栈模板题
算法·leetcode·职场和发展
宝贝儿好5 小时前
【强化学习实战】第十一章:Gymnasium库的介绍和使用(1)、出租车游戏代码详解(Sarsa & Q learning)
人工智能·python·深度学习·算法·游戏·机器学习
pao__pao_8 小时前
计算机系统大作业 程序人生-Hello’s P2P
程序人生·职场和发展·课程设计
munubak8 小时前
程序人生-Hello’s P2P
程序人生·职场和发展
努力学算法的蒟蒻8 小时前
day109(3.10)——leetcode面试经典150
面试·职场和发展
芝士爱知识a8 小时前
【程序人生】码农考公指南:是“降维打击”还是“围城自困”?
程序人生·职场和发展·程序员·公务员·考公·职场规划
炒鸡菜6668 小时前
程序人生-Hello’s P2P
c语言·程序人生·职场和发展
weixin_458872619 小时前
东华复试OJ二刷复盘2
算法
Charlie_lll9 小时前
力扣解题-637. 二叉树的层平均值
算法·leetcode
爱淋雨的男人9 小时前
自动驾驶感知相关算法
人工智能·算法·自动驾驶