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

代码随想录冲冲冲 Day48 单调栈Part2

42. 接雨水

关键点有以下几个

首先是怎么去理解接雨水 其实就是找每一个段的左边第一个最大值和右边第一个最大值

既然是最大值 那么单调栈就是递增的

左边第一个最大值其实就是pop掉中间的之后st.top 

由于是出现大于等于情况时候进行操作 所以右边最大值就是i

接下来就是在大于的情况进行操作

由于这种题目需要先去pop得到中间值 所以说后续需要再进行一次empty判断

雨水体积是高 x 宽

高度就由两边高度更低的决定

宽度就以两边index -1决定 

当while loop结束之后 说明栈中没有元素了或者说当前这个元素要小于栈中的元素了

那么就把这个元素放进来

84. 柱状图中最大的矩形

这道题整体思路和接雨水很像 但是也有一些区别

首先就是怎么找最大的矩形

其实就是找一个位置左边的最小值和右边的最小值

左边的最小值是向左延伸到哪 右边就对应了向右延伸到哪

为了避免原本的height数组就是单调递增或递减的 所以要在前后加上一个0 

末尾为什么要加元素0?

如果数组本身就是升序的,例如[2,4,6,8],那么入栈之后 都是单调递减,一直都没有走 情况三 计算结果的哪一步,所以最后输出的就是0了

开头为什么要加元素0

如果数组本身是降序的,例如 [8,6,4,2],在 8 入栈后,6 开始与8 进行比较,此时我们得到 mid(8),right(6),但是得不到 left。

(mid、left,right 都是对应版本一里的逻辑)

因为 将 8 弹出之后,栈里没有元素了,那么为了避免空栈取值,直接跳过了计算结果的逻辑。

之后又将6 加入栈(此时8已经弹出了),然后 就是 4 与 栈口元素 6 进行比较,周而复始,那么计算的最后结果result就是0。

之后的逻辑就是一样的了

http://www.lryc.cn/news/440283.html

相关文章:

  • 企业内训|Nvidia智算中心深度技术研修-某智算厂商研发中心
  • 《算法笔记》例题解析 第3章入门模拟--3图形输出(9题)2021-03-03
  • 合宙Air201模组LuatOS:PWRKEY控制,一键解决解决关机难问题
  • Kafka 命令详解及使用示例
  • 重生归来之挖掘stm32底层知识(1)——寄存器
  • Qt构建JSON及解析JSON
  • 合宙Air201模组LuatOS扩展功能:温湿度传感器篇!
  • 主流敏捷工具scrum工具
  • 探索微服务架构:从理论到实践,深度剖析其优缺点
  • 2024 年最佳 Chrome 验证码扩展,解决 reCAPTCHA 问题
  • Go语言现代web开发defer 延迟执行
  • Vue路由二(嵌套多级路由、路由query传参、路由命名、路由params传参、props配置、<router-link>的replace属性)
  • 【RabbitMQ】可靠性传输
  • 【论文阅读】PERCEIVER-ACTOR: A Multi-Task Transformer for Robotic Manipulation
  • Linux 常用指令
  • 使用 PHPstudy 建立ThinkPHP8 本地集成环境
  • 【系统架构设计】软件的知识产权保护+标准化概论+应用数学+云计算
  • 解决使用阿里云DataV Geo在线地图路径访问403问题
  • linux 使用SSH密钥配置免密登录
  • python教程(二):python数据结构大全(附代码)
  • MySQL基于GTID同步模式搭建主从复制
  • RecyclerView的子项长按选择功能
  • mongoDB-1
  • iKuai使用及设置流程
  • 【乐企-业务篇】销项开票接口声明(主要是业务对接)
  • Pytest配置文件pytest.ini如何编写生成日志文件?
  • rust快速创建Tauri App ——基于create-tauri-app
  • 【MySQL】MySQL中JDBC编程——MySQL驱动包安装——(超详解)
  • 电脑安装OpenWRT系统
  • 说说几款耳机