代码随想录算法训练营第60天| Leetcode 84.柱状图中最大的矩形
文章目录
- Leetcode 84.柱状图中最大的矩形
Leetcode 84.柱状图中最大的矩形
题目链接:Leetcode 84.柱状图中最大的矩形
题目描述: 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。
思路: 我们发现:数组中的每个元素,若假定以它为高,能够展开的宽度越宽,那么以它为高的矩形面积就越大。因此需要找到每个元素左边第一个比它矮的矩形和右边第一个比它矮的矩形,在这中间的就是最大宽度。 与Leetcode 42. 接雨水不同的是,本题的单调栈顺序:栈头到栈底从大到小。
代码如下:
class Solution {
public:int largestRectangleArea(vector<int>& heights) {int result = 0;stack<int> st;// 将数组首尾加上0,避免因为栈空而跳过计算逻辑heights.insert(heights.begin(), 0);heights.push_back(0);st.push(0); // 栈内存放下标for (int i = 1; i < heights.size(); i++) {if (heights[i] >= heights[st.top()]) {st.push(i);} else {while (!st.empty() && heights[i] < heights[st.top()]) {int mid = st.top();st.pop();if (!st.empty()) {int l = st.top();int r = i;int w = r - l - 1;int h = heights[mid];result = max(result, w * h);}}st.push(i);}}return result;}
};
当我们对单调栈代码逻辑熟悉之后,刷题时可以直接依照模板来写:
stack<int> st;
for(int i = 0; i < nums.size(); i++)
{while(!st.empty() && st.top() > nums[i]){st.pop();}st.push(nums[i]);
}
总结: 单调栈还需要多刷题,仅仅掌握几道经典题目是不够的。
最后,如果文章有错误,请在评论区或私信指出,让我们共同进步!
相关文章:
代码随想录算法训练营第60天| Leetcode 84.柱状图中最大的矩形
文章目录 Leetcode 84.柱状图中最大的矩形 Leetcode 84.柱状图中最大的矩形 题目链接:Leetcode 84.柱状图中最大的矩形 题目描述: 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状…...
编写一个简单的cmakelist.txt
文章目录 代码main.cpp头文件和子模块CMakeLists.txtsubModule/CMakeLists.txt顶层CMakeLists.txtCMakeList中的内容说明生成跨平台到Visual studio下上一篇提到了cmake的设计目的与作用,这一篇就来手动编写一个基本的cmakelist.txt,并演示一下如何生成不同平台的构建文件。 …...
基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的零售柜商品检测软件(Python+PySide6界面+训练代码)
摘要:开发高效的零售柜商品识别系统对于智能零售领域的进步至关重要。本文深入介绍了如何运用深度学习技术开发此类系统,并分享了全套实现代码。系统采用了领先的YOLOv8算法,并与YOLOv7、YOLOv6、YOLOv5进行了性能比较,呈现了诸如…...
数据库的学习
数据库软件: 关系型数据库:Mysql Oracle SqlServer Sqlite 非关系型数据库:Redis NoSQL 1.数组,链表,文件,数据库 数组,链表:内存存放数据的方式&…...
matlab去除图片上的噪声
本问题来自CSDN-问答板块,题主提问。 如何利用matlab去除图片上的噪声? 一、运行效果图 左边是原图,右边是去掉噪音后的图片。 二、中文说明 中值滤波是一种常见的图像处理技术,用于去除图像中的噪声。其原理如下: 1. 滤波器移动:中值滤波器是一个小的窗口,在图像上移…...
C++超详细知识点(五):类的友元函数和友元类
目录 标题: 友元函数和友元类1. 友元函数2. 友元类 标题: 友元函数和友元类 友元函数和友元类是C中的概念,它们允许某些函数或类访问另一个类的私有成员。这样的访问权限超过了通常的私有和保护访问级别。请注意,友元类的使用应该…...
SOC设计:关于reset的细节
有如下几个信号 1、时钟:clk_top 2、总的reset信号:rstn_top 3、scan的reset信号:scan_rstn 4、软件复位信号:rstn_soft_sub 5、scan模式信号:scan_mode 6、reset bypass 信号:scan_rstn_sel 功能&a…...
支小蜜AI校园防欺凌系统可以使用在宿舍吗?
随着人工智能技术的快速发展,AI校园防欺凌系统已成为维护校园安全的重要手段。然而,关于这一系统是否适用于宿舍环境,仍存在一些争议和讨论。本文将探讨AI校园防欺凌系统在宿舍中的适用性,分析其潜在的优势与挑战,并提…...
外卖平台订餐流程架构的实践
当我们想要在外卖平台上订餐时,背后其实涉及到复杂的技术架构和流程设计。本文将就外卖平台订餐流程的架构进行介绍,并探讨其中涉及的关键技术和流程。 ## 第一步:用户端体验 用户通过手机应用或网页访问外卖平台,浏览菜单、选择…...
[AIGC] Spring Boot中的切面编程和实例演示
切面编程(Aspect Oriented Programming,AOP)是Spring框架的关键功能之一。通过AOP,我们可以将代码下沉到多个模块中,有助于解决业务逻辑和非业务逻辑耦合的问题。本文将详细介绍Spring Boot中的切面编程,并…...
各个类型和Json类型的相互转换
ObjectMapper类(com.fasterxml.jackson.databind.ObjectMapper)是Jackson的主要类,它可以帮助我们快速的进行各个类型和Json类型的相互转换。 对应maven: <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId&…...
C语言:操作符详解(下)
目录 一、逗号表达式二、下标访问[ ]、函数调用()1. [ ]下标引用操作符2.函数调用操作符 三、结构成员访问操作符1.结构体(1) 结构的声明(2) 结构体变量的定义和初始化 2.结构成员访问操作符(1)结构体成员的直接访问(2)结构体成员的间接访问 四、操作符的属性:优先级…...
电商场景下 ES 搜索引擎的稳定性治理实践
继上文在完成了第一阶段 ES 搜索引擎的搭建后,已经能够实现对千万级别的商品索引的读写请求的支持。目前,单机房读流量在 500~1000 QPS 之间,写流量在 500 QPS 左右。 但随着业务的发展,问题也逐渐开始暴露࿰…...
jdk8与jdk17的区别。springboot2.x与springboot3.x的区别
1. jdk8与jdk17的区别 Java JDK 8 和 JDK 17 之间存在许多区别,包括功能、性能、语言特性和工具等方面。以下是它们之间的一些主要区别: 功能和语言特性: JDK 8引入了许多重要的语言特性,包括Lambda表达式、方法引用、Stream API、…...
Pytest测试中的临时目录与文件管理!
在Pytest测试框架中,使用临时目录与文件是一种有效的测试管理方式,它能够确保测试的独立性和可重复性。在本文中,我们将深入探讨如何在Pytest中利用临时目录与文件进行测试,并通过案例演示实际应用。 为什么需要临时目录与文件&a…...
arduino 编程esp8266
概述: 1.板子外设资源的访问:Libraries - Arduino Reference 注意:开发板未nodeMCU1.0(esp-12e)(esp8266-01s上调试的。) 2.硬件接线 en,vcc接3.3v,gnd接地(也就是和串口共地),gpio1接地。tx接串口rx,rx接串…...
基于springboot实现数据资产管理系统项目【项目源码+论文说明】计算机毕业设计
基于springboot实现数据资产管理系统演示 摘要 固定资产管理系统主要是完成对系统用户管理、资产信息管理、资产变更管理、资产用途管理、资产类别管理和资产增减管理。因为利用本系统管理员可以直接录入信息,修改信息,删除信息,并且若在录入…...
在Java中如何将十进制转换为二进制,八进制,十六进制以及它们之间的互相转换
目录 一、算法实现进制之间的转换 (1)十进制转换为二进制 (2)二进制转换成十进制 二、Java中的API实现进制转换 (1)十进制转换为二进制 (2)十进制转换为八进制 (3…...
AK/SK加密认证
一、AK/SK概念 Access Key (AK):AK是一个全局唯一的字符串标识符,用于标识用户。它类似于用户名,但仅用于身份识别,并不包含任何秘密信息。 Secret Access Key (SK):SK则是一个高度保密的密钥,类似于密码&…...
前端实现websocket通信讲解(vue2框架)
websocket: WebSocket是HTML5下一种新的协议(websocket协议本质上是一个基于tcp的协议)它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的Websocket是一个持久化的协议 websocket提供的api&a…...
深度解析抖音直播回放下载架构设计:从FLV流捕获到多线程存储优化
深度解析抖音直播回放下载架构设计:从FLV流捕获到多线程存储优化 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fall…...
CANN调优工具链全景:从profiler到tensorboard的完整观测体系
CANN调优工具链全景:从profiler到tensorboard的完整观测体系 有个团队找我说,他们买了昇腾NPU集群,花了大半年才把调优工具链搭起来。每个人用不同的工具,各看各的数据,互相之间对不上。最后我帮他们梳理了一套统一的工…...
机器人任务级迭代学习控制技术解析与应用
1. 任务级迭代学习控制技术解析在机器人操控领域,可变形物体的动态控制一直是个棘手难题。想象一下让机器人系鞋带或者叠衣服的场景——这些对人类来说轻而易举的动作,对机器人而言却需要处理近乎无限的自由度变化。传统方法通常需要精确的物理建模或海量…...
RISC-V事务内存机制设计与Gem5实现解析
1. RISC-V事务内存机制设计解析事务内存(Transactional Memory)作为一种硬件级并发控制机制,其核心目标是为程序员提供原子性、一致性和隔离性保证,同时避免传统锁机制带来的死锁、优先级反转等问题。在RISC-V架构下,我们基于Load-Linked(LL)…...
告别CubeMX思维定式:用S32DS的Processor Expert玩转S32K144外设配置(含FreeRTOS组件添加)
从CubeMX到Processor Expert:S32K144高效开发实战指南 在嵌入式开发领域,工具链的选择往往决定了开发效率的上限。对于习惯了ST生态的开发者来说,CubeMX的图形化配置已成为肌肉记忆般的操作。但当项目需求将我们推向NXP的S32K系列时ÿ…...
2026年第十八届“中国电机工程学会杯”全国大学生电工数学建模竞赛A题绿电直连型电氢氨园区优化运行参考仿真及论文(仿真代码+论文)
2026年第十八届“中国电机工程学会杯”全国大学生电工数学建模竞赛A题绿电直连型电氢氨园区优化运行参考仿真及论文。www.bilibili.com/video/BV1Q7Li6hE27/?vd_source6ea1beb17174384a0b3d09d6d35580f6 摘 要 本文针对绿电直连型电氢氨园区的优化运行问题,在题目…...
工业电伴热系统安全防护:微型热保护器选型、安装与维护全解析
1. 工业电伴热保温套与热保护器:一个被低估的安全基石在工业现场,尤其是化工、石油、食品加工这些对温度敏感或存在防冻需求的行业,管道和储罐的伴热保温是维持生产连续性的生命线。想象一下,一条输送高凝点原油的管道,…...
Linux下BepInEx Mod部署原理与实战指南
1. 为什么Linux玩家总在Mod部署上卡住?——BepInEx不是“装上就能用”的玩具 BepInEx、Unity、Linux、Mod框架——这四个词凑在一起,对很多刚从Windows转战Linux的玩家或Mod开发者来说,几乎等于一道默认关闭的门。我第一次在Ubuntu 22.04上尝…...
从‘阿强爱上阿珍’到程序验证:自然演绎规则在软件测试中的实战应用
逻辑引擎:自然演绎规则在软件质量保障中的工程化实践 当测试工程师面对一段复杂的状态机代码时,他们手中的武器不仅仅是JUnit或Selenium——数理逻辑中的自然演绎规则正在成为新一代质量保障的"秘密武器"。从反证法驱动的边界条件设计…...
国产DSP FT-M6678中断开发避坑指南:从CIC配置到向量表编写的完整流程
FT-M6678中断开发实战:从CIC配置到向量表编写的避坑指南 第一次接触FT-M6678的中断系统时,我被各种专业术语和复杂的寄存器配置搞得晕头转向。直到项目进度告急,我才意识到那些看似晦涩的CIC配置细节,实际上决定了整个系统的实时响…...
