60天【代码随想录算法训练营34期】第十章 单调栈part03 (84.柱状图中最大的矩形)

84.柱状图中最大的矩形

class Solution:
    def largestRectangleArea(self, heights: List[int]) -> int:
            s = [0]
            result = 0
            heights.insert(0,0)
            heights.append(0)
            
            for i in range(1, len(heights)):
                if heights[s[-1]] < heights[i]:
                    s.append(i)
                elif heights[s[-1]] == heights[i]:
                    s.pop()
                    s.append(i)
                else:
                    while s and heights[s[-1]] > heights[i]:
                        mid = s[-1]
                        s.pop()
                        if s:
                            min_left = s[-1]
                            min_right = i
                            area = (min_right-min_left-1)*heights[mid]
                            result = max(result, area)
                    s.append(i)
            return result
posted @   MiraMira  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示