当前位置: 首页 > news >正文

leetcode hot100 柱状图中的最大矩形

84. 柱状图中最大的矩形

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。

求在该柱状图中,能够勾勒出来的矩形的最大面积。

class Solution:
    def largestRectangleArea(self, heights: List[int]) -> int:
        # 可以肯定的是,最终的那个图形,肯定是包含某个矩形的上边的
        # 所以我们只要找出每个矩形的,以他自己为上边的大矩形的最大面积即可
        # 这个最大面积就是左边比他小的  右边比他小的两个节点决定的
        # 先找左边的index

        stack = []
        lenarr = len(heights)
        left = []
        right = []
        for i in range(lenarr):
            while stack and stack[-1][0]>=heights[i]:
                stack.pop()
            if stack:
                left.append(stack[-1])
            else:
                left.append((-1,-1))
            stack.append((heights[i],i))

        stack = []
        heights = heights[::-1]
        for i in range(lenarr):
            while stack and stack[-1][0]>=heights[i]:
                stack.pop()
            if stack:
                right.append(stack[-1])
            else:
                right.append((-1,lenarr))
            stack.append((heights[i],lenarr - i-1))
        # print(left,right[::-1])
        right = right[::-1]
        heights = heights[::-1]
        maxsize = 0
        res = []
        for i in range(lenarr):
            res.append((right[i][1] - left[i][1]-1)*heights[i])
            if maxsize < (right[i][1] - left[i][1]-1)*heights[i]:
                maxsize = (right[i][1] - left[i][1]-1)*heights[i]
        # print(res)
        return maxsize



简单来说就是找到左边的距离他最近的最小的值,右边的距离他最小的值,然后计算当前矩形作为上边的最大矩形面积。

用到了单调栈的模板

http://www.dtcms.com/a/88786.html

相关文章:

  • Linux下S3cmd使用方式详解:从入门到高级的对象存储管理
  • RISC-V AIA学习2---IMSIC
  • macOS 安装 Miniconda
  • C++ Json-Rpc框架-3项目实现(1)(1.其它函数实现2.消息类型字段定义3.消息Message/通信Muduo抽象具象实现)
  • 深入解析 Vue3 响应式系统:原理、性能优化与应用场景
  • leetcode 2116. 判断一个括号字符串是否有效 中等
  • 如何扩展 Linux 中 ext4 文件系统的大小
  • 【PostgreSQL】pg各版本选用取舍逻辑与docker安装postgres:15
  • Day110 若依-基础
  • 微信小程序中使用WebSocket通信
  • 【2025】基于springboot+vue的高考志愿填报系统设计与实现(源码、万字文档、图文修改、调试答疑)
  • Chrome 134 版本开发者工具(DevTools)更新内容
  • WordPress分类目录绑定二级域名插件
  • WordPress上传图片时显示“未提供数据”错误
  • 常⻅框架漏洞--ThinkPHP
  • Python虚拟环境:从入门到实战指南
  • vscode设置console.log的快捷输出方式
  • 量化研究--小果聚宽交易系统上线高速服务器,提供源代码
  • 『 C++ 』原生字符串:让字符串处理更轻松
  • 0基础学前端----移动WEB开发之flex布局DAY15
  • 单片机 - 串行通信 并行通信、接口类型及常见通信协议详细解析
  • 文件上传的小点总结(2)
  • 用DrissionPage升级网易云音乐爬虫:更稳定高效地获取歌单音乐(附原码)
  • 【leetcode hot 100 35】搜索插入位置
  • ZIP_STORED和ZIP_LZMA没有compresslevel参数!
  • html css js网页制作成品——HTML+CSS+js迪奥口红网站网页设计(4页)附源码
  • 智能汽车图像及视频处理方案,支持视频实时拍摄特效能力
  • Docker-Compose部署 EasySearch 异常问题排查
  • 探索AI的无限可能,体验智能对话的未来,大模型 API 演示
  • Qt 高效读写JSON文件,玩转QJsonDocument与QJsonObject