84.柱形图中最大的矩阵

二刷终于能过了.

思路解析:

不愧是hard,第一步就很难想,     对于每一个矩阵,我们要想清楚怎么拿到最大矩阵, 对于每个height[i],我们需要找到left和right,left是i左边第一个小于height[i]的,right是右边第一个小于height[i]的,那么他的最大矩阵就是height[i] * (right-left-1), 遍历所有的i即可

但是对于1e5我们不可能用O(n^2),所有我们使用单调队列来优化这个取 left,right 的过程.具体说来就是

        把right数组设置初值len-1, 从左往右遍历, 如果当前元素小于队尾,就把队尾元素弹出,队尾元素对应的right就是当前的i ,直到队列为空,或者队尾元素大于等于当前元素,遍历结束还存在队列里面的元素的right是len-1

        left同理

        即是, 把left数组设置初值0, 从右往左遍历, 如果当前元素小于队尾,就把队尾元素弹出,队尾元素对应的left就是当前的i, 直到队列为空,或者队尾元素大于等于当前元素,遍历结束还存在队列里面的元素的right是0

具体代码如下:

class Solution {
public://找左右两边比他大的连续的int largestRectangleArea(vector<int>& heights){stack<int> stk;int len=heights.size();vector<int> l(len,0),r(len,len-1);for(int i=0;i<heights.size();i++){while(stk.size() && heights[i]<heights[stk.top()]){ //正常的应该是 <= 的时候pop但是我们这个不是要保证单调,而是要求出左右边界,所以我们使用<的时候popr[stk.top()]=i-1; //所以离开的时候,就是可以判断  剩下没有被赶走的就是len-1了stk.pop(); }stk.push(i);}stack<int> stk1; //清空一个栈,不如新建一个for(int i=len-1;i>=0;i--){while(stk1.size() && heights[i]<heights[stk1.top()]){l[stk1.top()]=i+1; //所以离开的时候,就是可以判断  剩下没有被赶走的就是0了stk1.pop();}stk1.push(i);} int ans=0;for(int i=0;i<len;i++){ans=max(ans,(r[i]-l[i]+1)*heights[i]);}return ans;}
};//给两个测试用例
//[2,1,5,6,2,3,2]  
//[2,1,5,6,2,3,3,3,2]

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

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

相关文章

linux下安装deepspeed

安装步骤 一开始安装deepspeed不可以使用pip直接进行安装。 这时我们需要利用git进行clone下载到本地&#xff1a; git clone https://github.com/microsoft/DeepSpeed.git 进入到deepspeed的安装目录下 cd /home/bingxing2/ailab/group/ai4agr/wzf/Tools/DeepSpeed 激活…

LeetCode-旋转链表

每日一题&#xff0c;很久没做链表的题了&#xff0c;今天做l一道相对简单的力扣中等难度题。 题目要求 给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], k 2 输出&…

Java基础入门day41

day41 约束 实体完整性 主键约束 唯一约束 自增约束 域完整性 限制列的单元格的数据的正确性 非空约束 not null&#xff0c;非空&#xff0c;此列必须有值 create table subject03(sid int primary key auto_increment,subname varchar(20) unique not null,subHour int…

C++ 异常处理机制详解:轻松掌握异常处理技巧

C 异常处理 C 异常处理机制允许程序在运行时处理错误或意外情况。它提供了捕获和处理错误的一种结构化方式&#xff0c;使程序更加健壮和可靠。 异常处理的基本概念&#xff1a; 异常: 程序在运行时发生的错误或意外情况。抛出异常: 使用 throw 关键字将异常传递给调用堆栈。…

智慧浪潮下的产业园区:洞察智慧化转型如何打造高效、绿色、安全的新园区

目录 一、引言 二、智慧化转型的内涵与价值 三、打造高效园区的智慧化策略 1、建设智能化基础设施 2、推广智能化应用 3、构建智慧化服务平台 四、实现绿色园区的智慧化途径 1、推动绿色能源应用 2、实施绿色建筑设计 3、加强环境监测与治理 五、保障园区安全的智慧…

pam配置文件中[default=2 ignore=ignore success=ok]

pam配置文件中第二字段为[default2 ignoreignore successok]&#xff0c;例如&#xff1a; auth [default2 ignoreignore successok] pam_localuser.so {include if "with-smartcard"}这行配置中的第二字段[d…

REST API规范

目录 一、REST相关规范1.1 Http Method1.2 REST接口格式1.3 Http Status1.4 版本控制 二、SpringMVC相关规范2.1 参数校验2.2 响应结果2.3 接口全局异常处理2.4 参数校验提示信息支持国际化2.5 响应码规范 REST JSON已成为Http接口的事实标准&#xff0c;本文给出我平时推荐的R…

大白菜启动U盘想格式化但格式化不了

部分区域被修改分区表保护起来了。直接格式化的话&#xff0c;里面的文件夹都还在。根本格式化不了。特别是可用容量并未还原出来。 进入计算机管理》磁盘管理&#xff0c;看到U盘盘符。别搞错了。删除掉里面的已经分的区域和未分区区域&#xff0c;让它还原成一个整体。退出。…

Webpack-入门

定义 静态模块&#xff1a;指的是编写代码过程中的html&#xff0c;css&#xff0c;js&#xff0c;图片等固定内容的文件 打包&#xff1a;把静态模块内容压缩、整合、翻译等&#xff08;前端工程化&#xff09; 1&#xff09;把less/sass转成css代码 2&#xff09;把ES6降级…

webpack 入口和出口的最佳实践

入口和出口的最佳实践 {ignore} 具体情况具体分析 下面是一些经典场景 一个页面一个JS 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 源码结构 |—— src|—— pageA 页面A的代码目录|—— index.js 页面A的启动模块|—— ...|—— pageB 页面…

matlab学习007-已知离散时间系统的系统函数并使用matlab绘制该系统的零极点图;判断系统的稳定性;幅频和相频特性曲线

目录 题目 离散时间系统的系统函数&#xff1a;H(z)(3*z^3-5*z^210z)/(z^3-3*z^27*z-5) 1&#xff0c;绘制该系统的零极点图 1&#xff09;零极点图 2&#xff09;代码 2&#xff0c;判断系统的稳定性 1&#xff09;判断结果 2&#xff09;代码 3&#xff0c;试用MATL…

闲话 ASP.NET Core 数据校验(一):内置数据校验

前言 所谓输入的是垃圾&#xff0c;输出也必然是垃圾&#xff0c;有多少安全问题隐藏在请求的数据中&#xff0c;所以永远不能相信来自用户端的输入。 对请求数据的合法性进行校验&#xff0c;不仅有助于提升用户界面的友好性&#xff0c;而且有助于提高后台程序的安全性和稳…

【车载开发系列】UDS诊断时间参数说明

【车载开发系列】UDS诊断时间参数说明 一. 应用层诊断时间参数 1&#xff09;P2 CAN_Client 诊断仪成功发送诊断报文请求之后到收到 ECU回复诊断响应的超时时间间隔 2&#xff09;P2 CAN_Server ECU 接收到诊断请求之后到开始发送诊断报文的时间间隔&#xff0c;一般默认最…

二维码门楼牌管理应用平台建设:场所检查的新模式

文章目录 前言一、二维码门楼牌管理应用平台的优势二、场所检查记录的重要性三、二维码门楼牌管理应用平台在场所检查中的应用四、二维码门楼牌管理应用平台的未来展望 前言 随着信息技术的飞速发展&#xff0c;二维码作为一种高效、便捷的信息识别方式&#xff0c;正逐渐渗透…

服务器数据恢复—存储硬盘坏道,指示灯亮黄色的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 一台某品牌EqualLogic PS系列某型号存储&#xff0c;存储中有一组由16块SAS硬盘组建的RAID5磁盘阵列&#xff0c;RAID5上划分VMFS文件系统存放虚拟机文件。存储系统上层一共分了4个卷。 raid5阵列中磁盘出现故障&#xff0c;有2块硬盘…

二极管钳位型光伏逆变并网建模simulink仿真

整理了二极管钳位型光伏逆变并网建模simulink仿真&#xff0c;效果明显&#xff0c;附赠仿真报告。适合小白 二极管钳位型光伏逆变并网是将光伏发电系统中的直流电能转换为交流电能&#xff0c;并与电网连接。在此仿真中使用最大功率点追踪&#xff08;MPPT&#xff09;技术&a…

基于CANoe从零创建以太网诊断工程(2)—— TCP/IP Stack 配置的三种选项

&#x1f345; 我是蚂蚁小兵&#xff0c;专注于车载诊断领域&#xff0c;尤其擅长于对CANoe工具的使用&#x1f345; 寻找组织 &#xff0c;答疑解惑&#xff0c;摸鱼聊天&#xff0c;博客源码&#xff0c;点击加入&#x1f449;【相亲相爱一家人】&#x1f345; 玩转CANoe&…

微信第三方开放平台,实现代公众号保留排版样式和图片发布文章

大家好&#xff0c;我是小悟 要想实现代公众号发布文章的功能&#xff0c;就得接入富文本编辑器&#xff0c;市面上富文本编辑器有很多&#xff0c;轻量的、重量的都有。 从开发者的角度&#xff0c;自然把轻量作为第一选择&#xff0c;因为好对接&#xff0c;怎么方便怎么来…

在win下,python如何调用.so库

#撰写c代码 #通过gcc命令编译成.so库 gcc -shared -o ./lib/pointlib.so point.c #python调用.so库 #运行结果 觉得本文对你有用&#xff0c;麻烦点赞或关注或收藏&#xff0c;你的肯定是我创作的无限动力&#xff0c;谢谢&#xff01;&#xff01;&#xff01;

设计模式- 外观模式(Facade Pattern)结构|原理|优缺点|场景|示例

设计模式&#xff08;分类&#xff09; 设计模式&#xff08;六大原则&#xff09; 创建型&#xff08;5种&#xff09; 工厂方法 抽象工厂模式 单例模式 建造者模式 原型模式 结构型&#xff08;7种&#xff09; 适配器…