[leetcode]84. 柱状图中最大的矩形

LeetCode 84. 柱状图中最大的矩形 | Python 使用单调栈, 解决《84. 柱状图中最大的矩形》问题 阅读详情

这种题的通解是用单调栈维护l,r数组,缺点是需要更多空间

class Solution {
public:
    int largestRectangleArea(vector<int>& heights) {
        int n=heights.size();if(n==0)return 0;
        
        int *l=new int[n+2];//l[i]:ai为最小值的左端点-1
        int *r=new int[n+2];//r[i]:ai为最小值的右端点+1
        int *a=new int[n+2];a[0]=-1;a[n+1]=-1;
        for(int i=0;i<heights.size();i++)a[i+1]=heights[i],l[i+1]=r[i+1]=0;//初始化
        stack<int>s;//维护栈内元素单调增的栈

        for(int i=0;i<=n;i++){
            while(!s.empty()&&a[s.top()]>=a[i])s.pop();
            //while结束,此时栈顶比a[i]小,所以栈顶就是i为最小值的左端点-1
            
            if(s.empty())l[i]=i-1;//栈空时防止溢出
            else l[i]=s.top();
            s.push(i);
        }
        
        while(!s.empty())s.pop();
        
        for(int i=n+1;i>=1;i--){//反过来跑一遍就能维护出右端点r[i]
            while(!s.empty()&&a[s.top()]>=a[i])s.pop();
            if(s.empty())r[i]=i+1;
            else r[i]=s.top();
            s.push(i);
        }

        int ans=0;
        for(int i=1;i<=n;i++){
            ans=max(ans,(r[i]-l[i]-1)*a[i]);
            //cout<<i<<" l:"<<l[i]<<" r:"<<r[i]<<endl;
        }
        return ans;
    }
};

 

Java实现 LeetCode 84 柱状图中最大得矩形 84. 柱状图中最大的矩形 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。 图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。 示例: 输入: [2,1,5,6,2,3] 输出: 10 class So... 阅读详情

相关推荐

LeetCode第84题_柱状图中最大的矩形

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

qq_40263592的博客 2461

LeetCode--84.柱状图中最大的矩形(暴力法,单调栈)

柱状图中最大的矩形(暴力法,单调栈)1. 题目描述2. 题目分析3. C语言实现3.1 暴力法3.2 单调栈4. Java实现 1. 题目描述 难度:困难 2. 题目分析 这道题有两种解法,一种是暴力遍历法,一种是利用栈来进行的单调栈的方法。 - 暴力法 暴力法师很容易想到的方法,从左到右依次遍历数组,依次计算每个元素所构成的最大矩形面积。时间复杂度为O(n^2)。 - 单调栈 这是一个非常典...

魔法师の屋子★↓☆ 3913

【困难】力扣算法题解析LeetCode84:柱状图中最大的矩形

柱状图最大矩形面积问题解析 本文介绍了一种基于单调栈的高效算法,用于求解柱状图中的最大矩形面积问题。该算法通过单次遍历即可确定每个柱子的左右边界,实现O(n)的时间复杂度。 核心思路: 使用单调递增栈存储柱子下标,保证栈内高度有序 遇到较小高度时触发面积计算: 弹出栈顶元素作为矩形高度 当前索引为右边界 新栈顶元素为左边界 通过哨兵值处理边界情况,确保所有柱子都能被处理 算法优势: 时间复杂度O(n),空间复杂度O(n) 采用数组模拟栈结构,减少内存消耗 处理10^5量级数据仅需20ms左右

ylumwd的博客 497

84. 柱状图中最大的矩形 C语言

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为[2,1,5,6,2,3]。 图中阴影部分为所能勾勒出的最大矩形面积,其面积为10个单位。 示例: 输入: [2,1,5,6,2,3] 输出: 10 最终的结果肯定是至...

DuanLiuchang的博客 961

HarmonyOS ArkTS开发实战:用Axios封装一个通用的网络请求工具类(附完整代码)

本文详细介绍了如何在HarmonyOS ArkTS开发中利用Axios封装一个通用的网络请求工具类,涵盖架构设计、核心模块实现、UI状态联动及高级功能扩展。通过单例控制器、拦截器链配置和Token自动刷新机制,提升网络请求的稳定性和可维护性,适用于各类HarmonyOS应用开发场景。

weixin_30772105的博客 491

深入解析luckyExcel处理xlsx与xls文件的实战技巧

本文深入解析了使用luckyExcel库在前端处理.xlsx与.xls文件的实战技巧。针对.xlsx文件,可直接调用API转换;对于老旧的.xls格式,则需结合SheetJS进行预处理。文章详细介绍了核心API的使用、两种格式的处理流程、数据提取方法以及性能优化建议,为开发在线Excel编辑应用提供了完整解决方案。

cherry的博客 817

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

84.柱状图中最大的矩形84.柱状图中最大的矩形题解代码 84.柱状图中最大的矩形 84.柱状图中最大的矩形 题解 思路:利用栈存下标,如果当前的高小于栈内idx对应的高,则计算idx延展开来的面积,官方题解视频看到9:08即可 代码 package main func largestRectangleArea(heights []int) int { if len(heights) == 0 { return 0 } var stack []int max := 0 for i := 0

清风 507

四旋翼无人机控制算法实战:从PID到MPC的路径跟踪

本文深入探讨了四旋翼无人机控制算法的演进路径,从基础的PID控制到高级的MPC算法,详细解析了各类算法的原理、实现技巧及适用场景。通过实战案例对比分析,为开发者提供从算法选型到参数调优的全方位指导,助力提升无人机飞行控制的精度与稳定性。

weixin_29090917的博客 240

LeetCode 84柱状图中最大矩形

LeetCode 84柱状图中最大矩形Hard 题目简述:给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。 输入:heights = [2,1,5,6,2,3] 输出:10 思路:单调栈O(n) 找到每个柱子左边和右边离自己最近的比自己低的柱子,夹在中间的矩形面积就为所求,然后用矩形宽度乘以当前柱子高度作为备选答案。即找两边第一个小于它的值 维护单调栈,如果当前元素下标i对应的柱子高度比栈顶元素对应

XBlog 493

【OpenSearch】从零到一:手把手搭建OpenSearch与Dashboard可视化平台

本文提供了一份详细的OpenSearch与Dashboard可视化平台从零搭建指南。内容涵盖环境准备、系统调优、核心服务安装配置、Dashboard部署与汉化,以及生产环境安全加固建议,帮助用户快速构建一个功能完整的搜索与分析平台。

devops8pract的博客 617

问题解答:如何不通过修改底层数据库表的方式,给数据库对应的数据结构,增添新的字段?

现在需要将这张表里的内容读取到 ABAP 内表里,并且针对每个行项目,增加一个新的列字段,我随便举个例子,这个列字段名称叫 LENGTH,值为 OBJ_NAME 字段的长度,使用。最笨的办法就是下面这样定义一个新的类型,这个类型的每个字段名称,都来自数据库表 TADIR 的同名字段,在末尾再增添自定义字段 length.其实我们是做 ALV 输出,只需要 ABAP 内表变量的类型,包含 TADIR 数据库表的全部字段,再加上新的 LENGTH 字段即可。这相当于多了一个中间层,没办法直接被 ALV 处理。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 477

LeetCode 84 柱状图中最大的矩形

LeetCode 84 柱状图中最大的矩形 题目链接 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。 图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。 示例: 输入: [2,1,5,6,2,3] 输出: 10 单调栈~ 对每一根柱子 iii,用单调栈分别记录从当前位置到左边第一根高度小于它的柱子的位置 l[i

旺崽的博客 2026

16、AI与无人机助力紧急器官移植及医疗物资运输

本文探讨了AI与无人机(UAV)集成模型在紧急器官移植和医疗物资运输中的应用。传统运输方式受限于交通、时间和环境因素,而基于图神经网络(GNN)的AI-UAV系统可实现高效、智能、全天候的医疗物资配送,具备实时温湿度监控、自动导航和适应复杂地形等优势。文章分析了该模型在血液、器官运输中的关键作用,展示了其在澳大利亚、中国、美国等国的实际应用案例,并通过表格与流程图说明运作机制。同时,文章还探讨了技术、法规和社会层面的挑战及应对策略,展望了未来技术融合、应用拓展和国际合作的发展趋势,凸显其在全球医疗物流中的广

lll78的博客 102

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

题目描述(困难难度) 给一个柱状图,输出一个矩形区域的最大面积。 解法一 暴力破解 以题目给出的例子为例,柱形图高度有 1, 2, 3, 5, 6,我们只需要找出每一个高度对应的最大的面积,选出最大的即可。如果求高度为 3 的面积最大的,我们只需要遍历每一个高度,然后看连续的大于等于 3 的柱形有几个,如果是 n 个,那么此时的面积就是 3 * n。所以高度确定的话,我们只需要找连续的大...

wind_liang的博客 1105

130页5万字某市档案馆数字档案馆建设方案

【版权声明】本资料来源网络,仅用于行业知识分享,供个人学习参考,请勿商用。【侵删致歉】如有侵权请联系小编,将在收到信息后第一时间进行删除!完整资料领取见文末,部分资料内容:国家档案局证实颁布《数字档案馆建设指南》, 明确了数字档案馆建设原则、要求、目标,对相关系统建设内容、功能要求进行了概括和详细说明。数字档案馆系统建设应以 OAIS&nbsp;参考模型为设计基础,以实现数字资源的长期保存与可信管理。设计的数字档案馆系统架构如下图。图-1 数字档案馆体系结构数字档案馆建设包括五大层次和三大保障体系:

zuoan1993的博客 1180

启动launch文件时显示找不到franka_ign_ros2_control-system...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 695

leetcode84 柱状图中最大的矩形

今天要讲的是leetcode84题,柱状图中最大的矩形,题目链接:https://leetcode-cn.com/problems/largest-rectangle-in-histogram/ 题目大意:给你一个数组,数组中的每个数都对应的是高度,你把他想象成一个柱状图,每个柱子的宽度都是1,你来求他形成的最大矩形的面积,就以示例来说,给你的数组为[2,1,5,6,2,3],你可以想象成这个样子 很明显,矩形的最大面积是这样的 你可以列举其他的情况,但是会发现都不如这个大,矩形的面积是高乘宽,所以我们要求

qq_51972900的博客 2782

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

力扣第84题——柱状图中最大的矩形

力扣第84题——柱状图中最大的矩形 前言 前言:其实我之前很少刷困难题,因为一般笔试或面试问困难题的机会不多(除了网易,一面就给我背刺了一道 二十四点),刷这道题是因为 2020/09/10 心动网络最后一题出的就是这题,当时用的双指针时间复杂度就卡在O(N2),结果只通过50%,所以考完试特地上力扣看了题解。 原题 思路:单调栈 我们首先来想最简单的思路:枚举高的解法。遍历所有柱子,每次记录当前柱子的高h,然后从这个柱子往两边延伸,直到遇到高度小于h的柱子(或者到达边界),就确定了矩形的左右边界,如果

weixin_43950523的博客 695

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

c语言力扣l最大矩形,leetcode 84柱状图中最大的矩形,利用单调栈求解l

利用单调了栈求解leetcode 84柱状图中最大的矩形imageimage利用单调递增栈的方式来实现,计算发生在每次弹出栈顶的操作过程中单调递增栈的操作步骤1。如果栈为空或者栈顶元素比入栈小 该元素直接入栈2。其他 弹出栈顶直至栈顶元素比当前入栈元素小为止,该元素入栈伪代码:if stack == NULL or top(stack)< item:push(item);else :wh...

weixin_39956558的博客 229

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Leetcode.84 柱状图中最大的矩形

个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1。,那么我们就需要更新答案,然后去掉栈顶元素,直到栈顶元素。输入:heights = [2,1,5,6,2,3]解释:最大的矩形为图中红色区域,面积为 10。在这种情况下,也可以计算出单个矩形的面积。输入: heights = [2,4]求在该柱状图中,能够勾勒出来的矩形的。接下来按照以下的三步,不断更新答案。我们维护一个单调递增的单调栈。我们可以在其头尾都插入。

感觉画质不如...原神的博客 175

LeetCode 84:柱状图中最大的矩形

给定柱状图的高度数组heights,每个柱子宽度为1,需找到。O(n²)O(n)

m0_75126572的博客 1031

leetcode-84-柱状图中最大的矩形-java

题目及测试 package pid084; /*柱状图中最大的矩形 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 https://leetcode-cn.com/problems/largest-rectangle-in-histogram/ 以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。 图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。

今天吃了吗的博客 402

力扣84-柱状图中最大的矩形(最容易看懂的栈图解 Java版题解)

力扣84-柱状图中最大的矩形 一、原题题目 1.1 题目   给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。   以上左图是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。右图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。 1.2 示例 示例: 输入: [2,1,5,6,2,3]输出: 10 来源:力扣(LeetCode)链接:https://leetcod

ItDaChuang的博客 628

84. 柱状图中最大的矩形 - 力扣(LeetCode)

题目描述 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。 图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。 示例: 输入: [2,1,5,6,2,3] 输出: 10 题解1 代码1 执行结果1 题解2...

Onwaier的博客 378

LeetCode第84题:柱状图中最大的矩形

LeetCode第84题题目详述解法一解法二解法三 题目详述 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。 图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。 解法一 暴力法。时间复杂度:O(n^3)...

weixin_42610002的博客 317

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

力扣84柱状图中最大的矩形,暴力解法,单调栈,哨兵

sxycylq的博客 227
上一篇: Codeforces Round #555 (Div. 3) Editorial
下一篇: [leetcode] 85. 最大矩形
animalcoder
博客等级 码龄9年 43粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值