84-柱状图中最大的矩形

84. 柱状图中最大的矩形/C++ 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。 图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。 示例: 输入: [2,1,5,6,2,3] 输出: 10 这道题我看了很多解析,但是都不太了解。最... 阅读详情

题目

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。

求在该柱状图中,能够勾勒出来的矩形的最大面积。

示例 1:

输入:heights = [2,1,5,6,2,3]
输出:10
解释:最大的矩形为图中红色区域,面积为 10

示例 2:

输入: heights = [2,4]
输出: 4

题解

class Solution {
    public int largestRectangleArea(int[] heights) {
        int res=0;
        Deque<Integer> stack=new ArrayDeque<>();//ArrayDeque!
        int[] newHeights=new int[heights.length+2];
        for(int i=0;i<heights.length;i++){
            newHeights[i+1]=heights[i];
        }//数组前后补0
        for(int i=0;i<newHeights.length;i++){
            while(!stack.isEmpty()&&newHeights[i]<newHeights[stack.peek()]){
                //栈顶元素大于当前遍历到的元素,则第i根柱子为最矮柱子所能延伸的最大面积可求得
                int h=stack.pop();//h是index...
                res=Math.max(res,(i-stack.peek()-1)*newHeights[h]);
            }
            stack.push(i);
        }
        return res;
    }
}

笔记:

  1. 在一维数组中对每一个数找到第一个比自己小的元素。这类“在一维数组中找第一个满足某种条件的数”的场景就是典型的单调栈应用场景。

  2. 下一个柱形的高度大,则矩形还不能确定,入栈。

  3. 在记录哪些柱子是暂时不能确定以其高为矩形的面积时,是从左到右放入记录列表的;当可以确定以其高为矩形的面积时,是从右到左移除列表的。这个特性符合栈的性质吗,先进后出,后进先出。

  4. 思路:遍历每个柱体i,分别找到其左边和右边第一个小于i的柱体,则其对应的矩形面积为 i的高度*两个小柱体之间夹的宽度,求出最终的最大面积(以第i根柱子为最矮柱子所能延伸的最大面积)。

  5. 暴力方法是对每个柱体左右的较矮柱体进行遍历,优化方法是使用栈。

  6. 当然为了避免到了最后一直都是递增的,所以可以在最后加一块高度为0的木板。

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的博客 2465

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

LeetCode 84. 柱状图中最大的矩形 | Python

使用单调栈, 解决《84. 柱状图中最大的矩形》问题

"大梦三千秋的博客 1327

(每日一练c++)84. 柱状图中最大的矩形

84. 柱状图中最大的矩形 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 1: 输入:heights = [2,1,5,6,2,3] 输出:10 解释:最大的矩形为图中红色区域,面积为 10 示例 2: 输入: heights = [2,4] 输出: 4 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/largest-rectangle-i

weixin_39827856的博客 582

实战ByteTrack:用C++手把手教你实现多目标跟踪(附完整代码解析)

本文通过C++实战教程,手把手教你实现ByteTrack多目标跟踪算法。文章详细解析了算法核心,包括利用卡尔曼滤波进行状态预测、匈牙利算法完成数据关联,以及ByteTrack独特的三次匹配策略来有效处理低置信度检测框,并提供了完整的项目架构、代码实现与性能优化指南。

yolo5detector的博客 301

SAP ERP与金蝶云星空的集成案例(新能源光伏行业)

通过建设PLM、SAP、MES、WMS、SCADA、EAM等多系统集成的工业互联网平台作为数字化工厂的控制中枢,不仅可以实现人员、设备、物料、工艺参数、产品等生产全流程追溯管理,同时也可以根据数据采集进行生产现场的控制调节,最大程度降低能耗水平。销售订单创建下推金蝶采购订单创建修改、销售订单创建下推金蝶销售订单创建修改、销售发货过账下推金蝶采购入库单、销售发货过账下推金蝶销售出库单:在SAP ERP系统创建销售订单、销售发货过账单后推送到云星空系统,进行采购/销售订单的创建修改、完成物料的入库和出库流程。

集信通 1620

84. 柱状图中最大的矩形

84. 柱状图中最大的矩形 原始题目链接:https://leetcode.cn/problems/largest-rectangle-in-histogram/ 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 解题思路: 使用单调栈解决两头大中间小或者两头小中间大的问题。例如以b点为高的矩形的最大宽度为, 从a到c,其中a,c分别为b左边和右边第一个小于b的元素,即找到b的边界a和c,矩形的面积就是(c - a

u013243296的博客 205

【71页PPT】工业40及智能制造解决方案(附下载方式)

2013年,工业4.0平台发布白皮书,正式确立其发展战略。工业4.0不仅是技术的升级,更是制造业思维的重构。工业4.0的核心是通过信息物理系统(CPS)实现工厂内外的互联,构建高度灵活的个性化生产模式。它不仅是技术革新,更是一种生产方式的变革,使传统行业界限模糊化,催生新的商业模式和合作形式。德国作为制造业强国,其GDP的25%和出口总额的60%依赖制造业,因此工业4.0成为其维持全球领先地位的重要战略。CPS是工业4.0的基石,通过计算、通信与控制技术(3C)实现物理世界与信息世界的深度融合。

2501_92808811的博客 951

剑指 Offer II 039. 直方图最大矩形面积

剑指 Offer II 039. 直方图最大矩形面积: 题目链接 :剑指 Offer II 039. 直方图最大矩形面积 题目:给定非负整数数组 heights ,数组中的数字用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 思路: 1、单调栈+哨兵: (1)矩形面积的计算=底*高,这是毋庸置疑的,那么需要的到三个参数:左边界、右边界、高、 (2)我们的策略是将所以单位宽度为1的矩形的高都压入一个单调栈,即每个高只进入栈中一次。 (3)

weixin_45750855的博客 2627

机械臂视觉抓取避坑指南:如何正确计算手眼标定矩阵(附Numpy代码)

本文详细解析了机械臂视觉抓取中手眼标定矩阵的计算方法,特别针对'眼在手上'配置下的常见错误提供了解决方案。通过Numpy代码示例和坐标转换原理,帮助开发者避免矩阵计算错误和坐标转换偏差,提升工业自动化系统的精度和效率。

weixin_29081703的博客 244

YOLOv13保姆级教程+AKConv模块:可变形卷积+自适应核优化,mAP提升3.23%,召回率&mAP50~95显著提升(论文涨点模块已验证)

本文介绍了一种改进的YOLOv13-AKConv模型,通过引入AKConv模块显著提升了目标检测性能。实验结果表明,优化后的模型(绿色曲线)相比原模型(蓝色曲线)在mAP指标上提升了3.23个点,同时召回率、mAP50-95等指标均有明显提升。作者详细阐述了模型移植过程,包括创建yolov13-AKConv.yaml配置文件,修改tasks.py和modules/init.py文件,以及实现AKConv模块的核心代码。该模块采用可变形卷积思想,通过动态生成采样点位置来增强特征提取能力,并集成了BN和SiLU

FJN110的博客 2611

LeetCode 84柱状图中最大矩形

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

XBlog 493

PyCharm 接入 OpenAI Codex CLI 的 4 步配置与调试实录

揭示 Codex CLI 在 PyCharm 中上下文失稳的四大根源:CLI 启动模式与 IDE 进程模型冲突、stdin/stdout 流式处理不兼容、环境变量污染、AST 注释缺失,并给出基于 Shell 脚本桥接与结构化上下文注入的稳定接入方案。

weixin_42627902的博客 378

LeetCode 84 柱状图中最大的矩形

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

旺崽的博客 2027

堆一呼一吸之间:动态扩缩容引发JVM堆内存震荡的伸缩算法、代际传导与容器定容解析

Kubernetes扩容后,新Java实例的GC频率常比老实例高出数倍,堆容量反复伸缩。本文从一次支付系统的GC陡增出发,结合HotSpot源码与JDK 8实测,拆解堆伸缩的记账规则:期望容量以GC后已用量为基数、以Xms为下限,按空闲比例判断扩缩,收缩只在老年代回收后按0%、10%、40%、100%步进;再剖析年轻代随老年代联动、晋升风暴与元空间触发线,对比Parallel、G1、ZGC等收集器及JDK 26的变化,讨论容器分账、HPA共振与原地扩缩容,最后给出分级定容、预热与监控的方案。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 15万+

Linux 命令行的艺术

Linux 命令行的艺术前言基础日常使用文件及数据处理系统调试单行脚本冷门但有用仅限 OS X 系统仅限 Windows 系统更多资源免责声明熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际上,它会提高你作为工程师的灵活性以及生产力。本文是一份我在 Linux 上工作时,发现的一些命令行使用技巧的摘要。有些技巧非常基础,而另一些则相当复杂,甚至晦涩难懂。这篇文章并不长,但当你能够熟练...

AI天才研究院 9284

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

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

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

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

leetcode84 柱状图中最大的矩形

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

qq_51972900的博客 2782

visio安装包

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

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

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

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

m0_75126572的博客 1031

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

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

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

weixin_42610002的博客 317

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

二、当当前柱子 i 的高度等于栈顶元素所对应的柱子的高度时,可以将当前柱子的下标 i 直接入栈,也可以先将当前栈顶元素弹出,再入栈,两者的区别在于前者在第三种情况计算时会多计算一次(会多进行一次面积计算结果为0的计算),但最后的结果 res 不变(因为 res 是所有面积中的最大值)。大体思路:对于每一个柱子,我们需要找到这根柱子左边 向左第一根柱子高度小于当前柱子高度的柱子的下标,和右边向右第一根柱子高度小于当前柱子高度的柱子下标,如下图,然后计算由当前柱子为基础所能形成的柱子的最大面积。

fujiang_xiao的博客 506

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

leetcode 84. 柱状图中最大的矩形 题目详情 题目链接 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。 图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。 示例: 输入: [2,1,5,6,2,3] 输出: 10 我的代码 class Solution { private: int re

qq_33789406的博客 131

LeetCode84 柱状图中最大的矩形

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

weixin_45771864的博客 207

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

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

weixin_43950523的博客 695

LeetCode84-柱状图中最大的矩形面积

LeetCode84-柱状图中最大的矩形面积 题目 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 输入: [2,1,5,6,2,3] 输出: 10 思路 一、暴力 两个循环,先固定一个外层循环,每次找到一个不为0的柱子,向右边遍历,遍历到最后或者遍历到高度为0的柱子停止。 public int largestRectangleArea(int[] heights) { if(heights.le

viva_la__vida的博客 411
上一篇: 56-合并区间
下一篇: 85-最大矩形
codrab
博客等级 码龄10年 15粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codrab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值