首页 > 其他分享 >力扣LCR 039. 柱状图中最大的矩形

力扣LCR 039. 柱状图中最大的矩形

时间:2024-07-22 19:20:34浏览次数:19  
标签:LCR int top heights 力扣 柱状图 ans 下标 最大值

思路
用到了单调栈。由于最大矩形它的高一定是height数组中的其中一个值,那么我们就可以遍历数组height的值再乘上它的宽的最大值WidthMax(宽的最大值后面会讲),然后取最大值就是答案,也就是ans=max(ans,WidthMax*height[x])。
那么如何求高为height[x]的宽的最大值WidthMax呢?
解题过程

如图,以黄色块为高所能撑起的最大范围即为红色部分,(数组heigh中的每个值都有可能是黄色块,所以后面要遍历一下)那么问题就转变为:
1.求从x开始的左边找第一个高度小于heigh[x]的长方形的下标l
2.同理,求从x的右边第一个小于heigh[x]的长方形的下标r
3.矩形的宽的最大值为WidhMax = r -l -1

那么问题又转变为如何求上面的l和r?
对于求r,此问题不就是已知数组的下标,求该下标开始从右边开始找第一个更小值吗?此时就可以用单调栈的思想来预处理每个点的右边界的值了,该过程与力扣中https://leetcode.cn/problems/next-greater-element-i/description/这道题相似,不懂单调栈的可以先做那道题
那么l也同理,从左边开始找第一个更小值的下标
那么r[x]和l[x]就求出来了,
最后遍历每个小长方形,求(height[x]*(r[x]-l[x]-1))的最大值就是答案了

时间复杂度:

标签:LCR,int,top,heights,力扣,柱状图,ans,下标,最大值
From: https://www.cnblogs.com/puningyyb/p/18316702

相关文章

  • 【动态规划】【官解+整洁度优化+状态压缩-空间优化算法】力扣198.打家劫舍
    你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你不触动警报装置的情况下,一夜......
  • R语言基于表格文件的数据绘制具有多个系列的柱状图与直方图
      本文介绍基于R语言中的readxl包与ggplot2包,读取Excel表格文件数据,并绘制具有多个系列的柱状图、条形图的方法。  首先,我们配置一下所需用到的R语言readxl包与ggplot2包;其中,readxl包是用来读取Excel表格文件数据的,而ggplot2包则是用以绘制柱状图的。包的下载方法也非常简单,......
  • 力扣-动态规划全解
    目录动态规划斐波那契数列-EASY爬楼梯-EASY使用最小花费爬楼梯-EASY不同路径-Middle不同路径II-Middle不同路径III-HARD整数拆分-MID*不同的二叉搜索树-MID背包问题-理论基础分割等和子集-EASY最后一块石头的重量II-MID目标和-MID*一和零-MID*53-最大子数组和-中等918-环形子数......
  • 力扣6. Z 字形变换
    将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z字形排列。比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:PAHNAPLSIIGYIR之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。......
  • 算法--力扣2. 两数相加
    题目:给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字0之外,这两个数都不会以0 开头。 思路:这题算是中等难度的。给个简......
  • 算法--力扣27. 移除元素
    给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。数组的元素在内存地址中是连续的,所以不能单独删除数组中的某个元素,只能覆盖。用JavaScript实现 /***@param{nu......
  • 力扣第208题“实现 Trie (前缀树)”
    关注微信公众号数据分析螺丝钉免费领取价值万元的python/java/商业分析/数据结构与算法学习资料在本篇文章中,我们将详细解读力扣第208题“实现Trie(前缀树)”。通过学习本篇文章,读者将掌握如何使用Trie数据结构来实现插入、搜索和前缀匹配功能,并了解相关的复杂度分析......
  • 蓝桥杯省赛 垂直柱状图(字符串+模拟)
    描述写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过 100 个字符),然后用柱状图输出每个字符在输入文件中出现的次数。严格地按照输出样例来安排你的输出格式。输入描述四行字符,由大写字母组成,每行不超过 100 个字符。输出描述由若干行组成,前几行由空......
  • 算法力扣刷题记录 五十一【654.最大二叉树】
    前言二叉树篇,继续。记录五十一【654.最大二叉树】一、题目阅读给定一个不重复的整数数组nums。最大二叉树可以用下面的算法从nums递归地构建:创建一个根节点,其值为nums中的最大值。递归地在最大值左边的子数组前缀上构建左子树。递归地在最大值右边的......
  • 算法力扣刷题记录 五十【106.从中序与后序遍历序列构造二叉树】和【105.从前序与中序
    前言记录三十八的四、二叉树构建通过层序遍历的数组实现。层序遍历中,某个节点下标是i,那么左孩子的下标2i+1,右孩子的下标2i+2。这是统一的规律。那么通过中序序列和后序序列如何构造二叉树?通过中序序列和前序序列如何构造二叉树?通过前序序列和后序序列如何构造二叉树?一......