最大矩形面积 --漫漫算法路 刷题篇

最大矩形面积问题——单调栈法 最大矩形面积问题——单调栈法 文章目录最大矩形面积问题——单调栈法直方图最大矩形面积分析单调栈法过程示例代码示例矩阵中最大的矩形分析代码示例 直方图最大矩形面积 题目地址 给定非负整数数组 heights ,数组中的数字用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例1 输入:heights = [2,1,5,6,2,3] 输出:10 解释:最大的矩形为图中红色区域,面积为 10 示例2 输入: heights = [ 阅读详情

给定一组非负整数组成的数组h,代表一组柱状图的高度,其中每个柱子的宽度都为1。 在这组柱状图中找到能组成的最大矩形的面积(如图所示)。 入参h为一个整型数组,代表每个柱子的高度,返回面积的值。


输入描述:
输入包括两行,第一行包含一个整数n(1 ≤ n ≤ 10000)
第二行包括n个整数,表示h数组中的每个值,h_i(1 ≤ h_i ≤ 1,000,000)


输出描述:
输出一个整数,表示最大的矩阵面积。

输入例子1:
6
2 1 5 6 2 3
解法一:直接循环遍历  两次循环  从第一个开始  依次与和后面的组成新的部分,取最大值  最后进行比较

import java.util.Scanner;

public class Main{
    public static int getArea(int[] num){
        if(num.length==1)
            return 0;
        if(num.length==2)
            return num[1];
        int len = num.length-1;
        int minHeight=0,area=0;
        for(int m=1;m<=len;m++){
            minHeight = num[m];
            for(int n=m+1;n<=len;n++){

                minHeight = Math.min(minHeight,num[n]);

  if(height[j]>area ){
                    area = height[j];
                }

            area = Math.max(area,(n-m+1)*minHeight);
            }
        }
        return area;
    }
    public static void main(String arg[]){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
    int[] num = new int[n+1];
            for(int i=1;i<=n;i++){
                num[i] = sc.nextInt();
            }
            int area = getArea(num);
            System.out.print(area+"");
        }
    }

}

解法二:只循环一次,遍历所有数字  每次找到其两边连续的不小于它的数  得到宽度 求出最大值   

import java.util.Scanner;
public class Main{
    public static long getArea(int[] num){
        if(num.length==1)
            return 0;
        if(num.length==2)
            return num[1];
        int len = num.length-1;
        long temarea=0,area=0;
        for(int m=1;m<=len;m++){
           /* minHeight = num[m];
            for(int n=m+1;n<=len;n++){
                minHeight = Math.min(minHeight,num[n]);
            area = Math.max(area,(n-m+1)*minHeight);
            }*/
            int left =m,right =m;
            while(left>1&&num[left-1]>=num[m]){
                left--;
            }
            while(right<len&&num[right+1]>=num[m]){
                right++;
            }
            temarea =(right-left+1)*num[m];
            if(temarea>area){
                area = temarea;
            }
        }
        return area;
    }
    public static void main(String arg[]){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
    int[] num = new int[n+1];
            for(int i=1;i<=n;i++){
                num[i] = sc.nextInt();
            }
            long area = getArea(num);
            System.out.print(area+"");
        }
    }
}

算法实验题1.5 最大矩形面积问题 很好哦,可以学习学习,适合大家自己学习。里面介绍了最大矩形面积的求法和代码学习。 立即下载

相关推荐

别再手动算了!用Excel函数一键搞定AQI和首要污染物分析(附完整公式模板)

本文介绍如何利用Excel函数自动化计算AQI和首要污染物分析,大幅提升数据处理效率。通过构建标准化输入模板、智能计算IAQI、自动判定AQI与首要污染物,并生成可视化仪表盘,帮助环保工作者快速完成每日监测报告。

weixin_30443075的博客 343

最大长方形(二)nsoj 258 51 nod 1102 面积最大的矩形

题目链接 最大长方形(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 Largest Rectangle in a Histogram A histogram is a polygon composed of a sequence of rectangles aligned at a common base line.

AYZXX的博客 539

PHP证书图片生成

$realname = "姓名"; $schoolname = "学校"; $idcard = "身份证号"; $image = imagecreatefrompng('certification.png'); // 证书模版图片文件的路径 $red = imagecolorallocate($image,00,00,00); // 字体颜色

4035

51nod 1102 面积最大的矩形

有一个正整数的数组,化为直方图,求此直方图包含的最大矩形面积。例如 2,1,5,6,2,3,对应的直方图如下: 面积最大的矩形为5,6组成的宽度为2的矩形,面积为10。 Input 第1行:1个数N,表示数组的长度(0 <= N <= 50000) 第2 - N + 1行:数组元素A[i]。(1  Output 输出最大的矩形面积

AK_HuangYC的博客 792

保姆级教程:用CellOracle 0.10.13分析你的单细胞数据,从GRN构建到基因扰动模拟

本文详细介绍了如何使用CellOracle 0.10.13进行单细胞数据分析,从基因调控网络(GRN)构建到基因扰动模拟的全流程。通过环境配置、数据准备、GRN构建和扰动模拟等步骤,帮助研究者高效预测细胞命运决定的分子机制,特别针对实际分析中的易错点提供解决方案。

weixin_42525005的博客 436

pytorchDataLoader中调整数据长度不一致问题(lstm等)

数据长度不一致 用pytorch做rnn的时候,如果输入数据不一样长,可以用两种方式解决。 一种是自定义collate方法, #自定义collate_fn dataloader.DataLoader(dataset,4,True,collate_fn=my_collate) 然后里面写数据和标签载入方式即可 def my_collate(batch): data = [item[0] for item in batch] target = [item[1] for item in batc

weixin_48174100的博客 7770

【专题】矩形和正方形的最大面积

专题--最大面积

SY奇星的OI博客 298

Spring AI 实战:5 分钟搭建你的第一个 AI 应用(含完整代码)

能力关键 API适用场景基础对话简单问答、文本生成流式输出实时打字机效果@Bean模型需要调用外部工具结构化输出需要返回 Java 对象多轮对话聊天机器人场景Spring AI 让 Java 开发者可以用最熟悉的方式(Spring Boot + Maven)进入 AI 应用开发领域,不用学新语言,不用换框架,这是它最大的优势。但目前为止,我们的 AI 应用只能回答"它脑子里已有的知识"。如果让它读懂你自己的技术文档、公司内部知识库呢?这就是下一篇文章的主题——RAG(检索增强生成)实战。

qq_17204557的博客 642

算法—求最大矩形面积

题目 给定一组非负整数组成的数组h,代表一组柱状图的高度,其中每个柱子的宽度都为1。 在这组柱状图中找到能组成的最大矩形的面积(如图所示)。 入参h为一个整型数组,代表每个柱子的高度,返回面积的值。 输入描述: 输入包括两行,第一行包含一个整数n(1 ≤ n ≤ 10000) 第二行包括n个整数,表示h数组中的每个值,h_i(1 ≤ h_i ≤ 1,000,000) 输出描述: 输出一个整数,表示最大的矩阵面积。 示例1 输入: 6 2 1 5 6 2 3 输出:10 分析 对于每一块矩形,都找出它所在区

shengpeizhu的博客 6094

从零到一:Quartus II连接开发板实战,打通绘图、管脚分配、编译与下载全链路

本文详细介绍了使用Quartus II软件连接FPGA开发板并完成首个项目的全流程。从硬件连接到驱动安装,到绘制电路框图、精准分配管脚,再到编译设置与最终下载,手把手指导您打通从设计到硬件实现的完整链路,是FPGA初学者的实战入门指南。

mqtt6iot的博客 717

解决西门子Step 7 basic 找不到许可证问题

你在使用博图软件是否遇到过Step 7 basic 找不到许可证的问题呢!不言怕,今天我就来告诉你该如何处理吧!看步骤: 1.删除原授权的License: 打开Automation License Manager应用,然后我们可以发现仅有的License Key前面有一个时钟,说明它已经过期不可用,我们就要去寻求新的Key. 打开“我的电脑”,选择C盘,点击上方查看 点击选项–>查看 然...

让技术没有门槛 14万+

算法:变形的最大矩阵面积

题目 在X轴上水平放置着 N 个条形图,这 N 个条形图就组成了一个柱状图,每个条形图都是一个矩形,求出这些矩阵所能包含的最大矩阵面积,例如x坐标为{1,1,1,1,2,1,1},y坐标为{5,2,5,4,5,1,6},则最大矩阵面积为(1+1+2)* 4 = 16 分析 以到第四个索引作为结尾来求此时的最大矩阵面积为例,此时的最大矩阵面积可以是(1+1+2)* 4或者(1+1+1+1+2)* 2或者是2 * 5,取他们中的最大值,有了这个想法,下面给出代码。 代码 package algorithm;

super_taotao的博客 423

告别有线:用PVE直通无线网卡,打造一台真正的‘无线’Win10软路由/测试机

本文详细介绍了如何通过PVE直通无线网卡技术,构建全无线Win10软路由或测试机。从硬件选型、PVE环境配置到PCIe和USB双模直通技术,逐步指导实现Wi-Fi AP和蓝牙连接功能,为家庭实验室和小型办公环境提供灵活高效的网络解决方案。

weixin_28683689的博客 586

可信AI、SAM大模型与智能机器人:技术融合与工程落地实战

在人工智能技术从实验室走向产业应用的关键阶段,理解其核心概念、工作原理与技术价值至关重要。AI系统正从追求单一性能指标,转向构建涵盖公平性、鲁棒性、可解释性、隐私保护与问责制的可信赖框架。与此同时,以SAM(Segment Anything Model)为代表的视觉基础模型,通过其强大的零样本泛化和交互式分割能力,正在重塑计算机视觉任务的开发范式,极大地提升了感知任务的通用性和效率。这些技术的核心价值在于解决复杂场景下的实际问题,例如在工业质检、安防巡检等应用场景中,将高精度感知与可靠决策相结合。本文聚焦于

weixin_30613343的博客 291

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

单调队列 最大矩形面积

最大矩阵 解题思路第1种算法: 这道题使用了单调栈的思想,不过用单调队列也不是不可以。 首先来介绍一下什么是单调栈。 单调栈与单调队列相似,都是保持容器里面保持一种单调性,区别就在于栈和队列这两个容器的本质性能的不同。 回到题目,这道题要求求出最大的矩形的面积。 进行计算的时候,每一个宽度为1,高度为h的矩形的右边一定要比它本身高不然无法计数出以他本身为起点的矩形的面积,因此我们只需要维护一个单调递增的栈,如果我们遇到了右边比左边大的情况,我们只能计算它本身。 加个图理解一下: .

zhao_list的博客 447

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

LeetCode算法打卡--最大面积

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

qi_700的博客 573

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

最大面积问题 LargestReactangle

描述:在下列非负数组中找出最大面积 Heigh=[0,2,1,3,4,3,2,0] 若干非负数组组成面积不同的矩形,求上述图片中的最大面积。在图中画出了下标[3-5]高度为3,面积为9的矩形和下标为[1-6],高度为1面积为6的矩形。思路:暴力遍历 1:从下标i开始,对于每一个高度Heigh[i]=h,向左遍历,如果j<0或Heigh[j]< Heigh[i],此时

小山岷的专栏 680

数组中的最大矩形(tiger基金的笔试题)

总体思想呢:就是把每一个bar为标准得到矩形(找到它左右两边的比它小的值来计算)来进行比较,这样就不会重复不会漏掉了。(两种方法下面绿色和红色标注的)

xuehuagongzi000的博客 552

算法基础篇:(二十一)数据结构之单调栈:从原理到实战,玩转高效解题

本文深入解析了单调栈这一高效数据结构。首先介绍了单调栈的基本概念,即在普通栈的基础上增加元素单调性约束,可分为递增栈和递减栈。接着详细讲解了四种核心应用场景:寻找左右侧最近更大/更小元素,并提供了对应的C++代码实现。通过洛谷P5788等模板题和发射站、柱状图最大矩形等实战案例,展示了单调栈如何将O(n²)问题优化为O(n)解法。最后总结了单调性选择、遍历方向等核心技巧,并给出避免数据溢出、优化IO等实用建议。掌握单调栈能有效解决"找最近最值"类问题,是算法竞赛和面试中的重要工具。

2301_79248256的博客 3056

LeetCode刷题

1. 剑指 Offer II 039. 直方图最大矩形面积 给定非负整数数组 heights ,数组中的数字用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。 输入:heights = [2,1,5,6,2,3] 输出:10 解释:最大的矩形为图中红色区域,面积为 10 暴力法 遍历整个heights列表,每次都以当前的height作为高,计算面积,此时只需向左和向右找到第一比当前低的柱子,即为左右边界,然后更新最大面积 class Solu

orangerfun的博客 351

1102 面积最大的矩形

有一个正整数的数组,化为直方图,求此直方图包含的最大矩形面积。例如 2,1,5,6,2,3,对应的直方图如下:     面积最大的矩形为5,6组成的宽度为2的矩形,面积为10。 收起 输入 第1行:1个数N,表示数组的长度(0 &lt;= N &lt;= 50000) 第2 - N + 1行:数组元素A[i]。(1 &lt;= A[i] &lt;= 10^9) 输出 输出最...

沈君乱 406

算法笔记:最大矩形面积

最大子矩形问题:在一个给定的矩形中有一些障碍点,要找出网格内部不包含任何障碍点,且边界与坐标轴平行的最大子矩形。常用的算法有两个:单调栈,时间复杂度O(n*m)(原文没有提如何解决忽略了左边界与整个举行的左边界重合,而右边界覆盖了一个障碍点的情况,实际解决方法是从左到右、从右到左各搜一遍)

GANIT的博客 1020

算法题:岛屿最大面积

一、题目 给定一个包含了一些0和1的非空二维数组grid。 一个岛屿是由一些相邻的1(代表土地) 构成的组合,这里的「相邻」要求两个1必须在水平或者竖直方向上相邻。你可以假设grid的四个边缘都被0(代表水)包围着。 找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。) 二、思路 使用递归,首先对数组进行循环,遇到“1”时开始计算针对上...

823

百度一面算法题:柱状图的最大矩形面积

给定非负整数数组 heights ,数组中的数字用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例: 输入:heights = [2,1,5,6,2,3] 输出:10   这是我在百度日常实习一面中面试官出的一道算法题,在此记录一下解题思路。   这道题的解题突破口是水桶模型,也就是说一个水桶能装多少水是取决于最短的那块木板的。这道题同理,我们需要找到直方图中最矮的column,但不是简单的找到整个柱状图中最短的column就完了,而是一

CY2333333的博客 955

「LeetCode 084」最大面积

题目地址: https://leetcode-cn.com/problems/largest-rectangle-in-histogram/ 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。 example 第一种方法,我们先确定左右两个边界,然后找边界中的最小值。比方说,我们左边界确...

xuzhougeng blog 642

洛谷P4147 悬线法处理最大子矩形问题模板

线性dp

stdforces的博客 246
上一篇: 拼凑钱币 --漫漫算法路 刷题篇
下一篇: 最长公共子字符串 -- 漫漫算法路 刷题篇
qishun2xiao
博客等级 码龄9年 15粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值