【单调栈】力扣84.柱状图中最大的矩形

上篇文章我们介绍了使用 无重复值 单调栈代码解决 含有重复值 的问题,在文章的最后,留下了一道考察相同思想的题目,今天我们来看看如何套路解决该题。

(还没看过前几篇介绍的小伙伴赶快关注,在 「单调栈」 集合里查看哦!)


力扣84.柱状图中最大矩形

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。

示例 1 :

输入: heights = [2,1,5,6,2,3]

输出: 10

解释: 最大的矩形为图中红色区域,面积为 10

思路分析

学会了前几篇所介绍的单调栈思想之后,这道题目其实能够很轻松的想到解题方法,并且与 上一道题目 非常相似。

关键点: 寻找某个元素左右两侧最近的且比该元素小的数的区间。

如示例 1 中的元素 5 ,找到左右两侧的 1 和 2 ,所以有效的区间范围是下标为 1 的元素 1 和下标为4的元素 2 之间 的区间长度,可以用 下标之差 - 1 得到,4-1-1=2

得到该区间后乘以该元素的大小即为最大矩形面积。


是不是很简单,接下来我们依旧思考一下需要考虑 处理重复值 的情况么?

根据 上一篇 总结的经验,只需考虑在含有相同值时,最后一个相同元素是否能够将答案计算正确呢?答案是可以的

这里就不再赘述了,不太懂的小伙伴可以去查看上一篇文章哦 ~

代码

public static int largestRectangleArea1(int[] height) {if (height == null || height.length == 0) {return 0;}int maxArea = 0;Stack<Integer> stack = new Stack<Integer>();for (int i = 0; i < height.length; i++) {// 相等时也弹出while (!stack.isEmpty() && height[i] <= height[stack.peek()]) {int j = stack.pop();int k = stack.isEmpty() ? -1 : stack.peek();// 计算 面积 = 区间长度 * 该元素高int curArea = (i - k - 1) * height[j];maxArea = Math.max(maxArea, curArea);}stack.push(i);}while (!stack.isEmpty()) {int j = stack.pop();int k = stack.isEmpty() ? -1 : stack.peek();int curArea = (height.length - k - 1) * height[j];maxArea = Math.max(maxArea, curArea);}return maxArea;
}

代码解释

有了前两篇文章的铺垫,写出这道题的代码是不是轻而易举呢?

由于含有相同元素时,无需特殊处理,因此 while 判断中符号为 <=

计算最终面积时,区间的长度应为 i-k-1 ,注意下标计算别出错了哦~


~ 点赞 ~ 关注 ~ 星标 ~ 不迷路 ~!!!

关注回复「ACM紫书」获取 ACM 算法书籍~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/779091.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker logs 查找日志常用命令

docker logs 是什么 docker logs 是 Docker 命令行工具提供的一个命令&#xff0c;用于查看容器的日志输出。它可以显示容器在运行过程中生成的标准输出&#xff08;stdout&#xff09;和标准错误输出&#xff08;stderr&#xff09;&#xff0c;帮助用户诊断容器的行为和排查…

2024年妈妈杯数学建模思路A题思路分享

文章目录 1 赛题思路2 比赛日期和时间3 组织机构4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间&#xff1a;2024…

课堂练习:环境体验——Linux 文件操作命令

任务描述 第二个任务就是了解Linxu的文件查看命令&#xff0c;文件编辑基本命令。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 1.文件查看命令。 2.文件编辑基本命令。 文件查看命令 我们要查看一些文本文件的内容时&#xff0c;要使用文本编辑器来查看…

基于unbantu的nginx的配置

目录 前言: 1.安装nginx并进行测试 1.1使用nginx -v 命令查看版本 1.2开启服务 查看端口 1.3测试 2.nginx的静态资源访问配置 2.1创建静态资源存放的目录 2.2写入目录中测试文件对应的内容 2.3修改配置文件 2.4 测试 3.虚拟主机配置 3.1创建目录 3.2写入测试…

配置visual studio code 用秘钥远程连接SSH服务器

配置visual studio code 用秘钥远程连接SSH服务器 文章目录 配置visual studio code 用秘钥远程连接SSH服务器简介1. 生成SSH密钥对2. 将公钥添加到Ubuntu服务器3. 将私钥添加到visual studio code的SSH配置文件中 简介 通过SSH密钥认证&#xff0c;用户无需在每次连接时输入密…

SOLIDWORKS教育版本的优点

SOLIDWORKS教育版本是一款专为教育机构和学生设计的三维CAD软件&#xff0c;它在工程设计和创新教育中发挥了重要的作用。本文旨在探讨SOLIDWORKS教育版本的优点&#xff0c;并分析其如何帮助学生和教师提升工程设计和创新能力。 首先&#xff0c;SOLIDWORKS教育版本具有易于学…

java 抠取红色印章(透明背景)

一个亲戚让我帮他把照片里的红色印章抠出来&#xff0c;&#xff0c;&#xff0c;记录下处理过程&#xff0c;代码如下&#xff0c;可直接用&#xff1a; public static void signatureProcess(String sourceImagePath, String targetImagePath) {Graphics2D graphics2D null…

卷积神经网络(CNN)——基础知识整理

文章目录 1、卷积神经网络 2、图片格式 3、图片卷积运算 4、Kernel 与 Feature Map 5、padding/边缘填充 6、Stride/步长 7、pooling/池化 8、shape 9、epoch、batch、Batch Size、step 10、神经网络 11、激活函数 1、卷积神经网络 既然叫卷积神经网络&#xff0c;这里面首先是…

JVM(一)——内存结构

一. 前言 1、什么是 JVM? 1&#xff09;定义&#xff1a; Java Virtual Machine - java 程序的运行环境&#xff08;java 二进制字节码的运行环境&#xff09; 2&#xff09;好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收功能数组下标越…

低压MOS在新能源园林机械上的应用-REASUNOS瑞森半导体

一、前言 在欧美地区&#xff0c;以锂电池为动力源的新能源园林机械迅速地替代着以往的燃油和交流电动力机器。而中国也将迎来一场风暴式革命。 园林工具是人类绿化景观的养护设备&#xff0c;是以养护草坪、绿篱、保护花草、树木为作业对象的&#xff0c;代替大部分手工劳动…

国内ip代理速度快的秘密

在互联网时代&#xff0c;IP代理已经成为许多网络用户、企业和开发者的重要工具。而在国内&#xff0c;由于网络环境的复杂性和特殊性&#xff0c;寻找一个速度快、稳定可靠的IP代理显得尤为重要。虎观代理将深入探讨国内IP代理速度快的秘密&#xff0c;并分析其带来的优势和应…

多个微信这样高效管理

随着微信成为企业商务沟通的主要平台&#xff0c;一些业务咨询量较大的行业&#xff0c;如教育培训、旅游、美容及医疗等&#xff0c;通过微信开展营销活动和客户服务过程中&#xff0c;经常面临多微信管理难题。 在这种情况下&#xff0c;采用微信线上业务模式&#xff0c;需…

Kubernetes篇(一)— kubernetes介绍

目录 前言一、应用部署方式演变二、kubernetes简介三、kubernetes组件四、kubernetes概念 前言 本章节主要介绍应用程序在服务器上部署方式演变以及kubernetes的概念、组件和工作原理。 一、应用部署方式演变 在部署应用程序的方式上&#xff0c;主要经历了三个时代&#xff…

雷军分享造车故事:储备1363亿元的现金,吊打特斯拉Model 3

小米召开新车发布会&#xff0c;正式发布小米 SU7。该车定位中大型纯电轿车&#xff0c;有 SU7、SU7 Pro、SU7 Max 三个版本&#xff0c;车身尺寸 4997/1963/1455mm&#xff0c;轴距 3000mm。售价 21.59-29.99 万。 在小米汽车SU7发布会后&#xff0c;小米集团的创始人、董事长…

Ubuntu 系统下安装 Nginx

目录 一、Nginx是什么 ​二、Ubuntu 系统下安装 Nginx 1、安装包下载 2、上传服务器并解压缩 3、依赖配置安装 4、生成编译脚本 ​5、编译 6、开始安装 7、设置为随机自启动 7.1、创建 nginx.service 文件&#xff0c;将以下内容粘贴到文件中 7.2、将 nginx.service…

增长超500%!亚马逊卖疯的旅行箱,赛盈分销浅析今年企业出海布局方向!

箱包行业迎来了新的发展契机&#xff0c;一方面是在工艺与技术创新下&#xff0c;另一方面&#xff0c;旅游经济复苏的推动下&#xff0c;全球箱包行业取得飞速发展。 Euromonitor & 华泰研究针对2018-2028这十年间的箱包市场进行了调研&#xff0c;数据显示2023年全球箱包…

Filter、Listener、AJAX

Filter 概念&#xff1a;Filter 表示过滤器&#xff0c;是JavaWeb三大组件(Servlet、Filter、 Listener)之一。 过滤器可以把对资源的请求拦截下来&#xff0c;从而实现一些特殊的功能。 过滤器一般完成一些通用的操作&#xff0c;比如&#xff1a;权限控制、统一编码处理、敏感…

Parallels Desktop 18中文--体验无缝的跨平台工作,轻松驾驭Windows与Mac

Parallels Desktop 18是一款功能强大的虚拟机软件&#xff0c;专为Mac用户设计&#xff0c;能在Mac上流畅运行Windows和其他操作系统。它提供了更快的性能、更好的图形处理以及更简洁的虚拟机导入导出功能&#xff0c;还支持Apple M1芯片&#xff0c;优化性能和电池续航时间。P…

从创意立项到产品赚钱的全调优过程复盘,如何提高产品存活率 | TopOn变现干货

10月28日&#xff0c;由TopOn、罗斯基联合主办的“游戏赛道新机会”主题沙龙在成都举办。活动邀请了国内外多位知名公司及游戏爆款产品的负责人分享&#xff0c;分别从各自的方向及经验出发&#xff0c;以数据、案例、产品分析、行业趋势等多个维度&#xff0c;为行业从业者带来…

RGB,深度图,点云和体素的相互转换记录

目录 1.RGBD2Point 1.2 步骤 2.Point2Voxel-Voxelization 2.1 原理 2.2 代码 3.Voxel2Point 4.Point2RGB 5.Voxel2RGB 1.RGBD2Point input&#xff1a;RGB D 内外惨 output&#xff1a;points cloud def depth2pcd(depth_img):"""深度图转点云数据图…