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

最大矩形面积问题——单调栈法

最大矩形面积问题——单调栈法

文章目录

    • 最大矩形面积问题——单调栈法
      • 直方图最大矩形面积
        • 分析
        • 单调栈法
        • 过程示例
        • 代码示例
      • 矩阵中最大的矩形
        • 分析
        • 代码示例

直方图最大矩形面积

  • 题目地址

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

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

示例1

img

输入:heights = [2,1,5,6,2,3]
输出:10
解释:最大的矩形为图中红色区域,面积为 10

示例2

img

输入: heights = [2,4]
输出: 4
分析
  • 矩形的面积就是宽x高,因此只要能确定每个举行的宽和高,就能计算出它的面积。

  • 宽可以通过数组下标相减的方式获得,至于高,只需要找对应范围的数组中的最小值即可得到,由此便可以得到面积

  • 该类题型有三种解法:暴力破解、分治法、单调栈法。

    • 暴力破解
      • 即便利所有的矩形,同时维护一个表示最大面积的变量即可
    • 分治法
      • 观察示例1可以发现,直方图的最大矩形有以下三种可能:
        • 1、矩形通过最矮的柱子,宽是最大的状态下。
        • 2、起始的柱子和终止的柱子始终在最矮的柱子的左侧。
        • 3、起始的柱子和终止的柱子始终在最矮的柱子的右侧。
      • 于是可以有如下思路:找到最矮的柱子,分别计算这三种状态,其中23本质上是同一种情况,即将一个区域分成左右两遍,求最大矩形,如此便是两个相同的子问题,可递归求解。
    • 单调栈法
      • 见下节
http://www.xdnf.cn/news/11347.html

相关文章:

  • Wireshark零基础使用教程(超详细)_wireshark使用教程
  • linux删除命令
  • 什么是Proxy Server
  • Java IO
  • 15款方便实用在线PDF转换器
  • C-Free使用教程(使用C-Free编写C语言程序)
  • 20230507使用python3批量转换DOCX文档为TXT
  • Android组件化跨进程通信框架Andromeda解析(1)
  • innerText,innerHTML的用法以及注意事项
  • Linux 内核(Kernel)组成分析
  • 建议收藏万字长文!嵌入式Linux系统移植原理与方法总结
  • 码率(Bitrate)、帧率(FPS)、分辨率和清晰度的联系与区别
  • srcollTop、clientHeight、scrollHeight详解
  • 【linux3.10】从mmap的实现来看vma的组织和使用
  • 解决mfc100u.dll丢失
  • ffmpeg和H264视频的编解码
  • 灰度、灰度级、分辨率、像素值;
  • 详细说明如何实现简易轮播效果
  • 电脑技巧:进程管理工具Process Explorer介绍
  • 聚水潭ERP集成用友NC(聚水潭主供应链)
  • U盘启动盘怎么制作?
  • 程序员必备的15个接单平台,拥有即将获得“钞能力”!
  • 芯片架构设计及其作用
  • 【C语言】C语言 学生成绩管理系统(源码+报告)【千行代码】【独一无二】
  • CLOSE_WAIT状态的原因与解决方法
  • 一文彻底搞懂进程间通信方式
  • 网关(Gateway)
  • Win10系统搭建个人hMailServer邮件服务结合内网穿透远程发邮件
  • XSD(Xml Schema Definition)详解
  • 文菌装NAS E5:超详细!手把手教您安装黑群晖918+6.2保姆级教程