[leetcode] 85. 最大矩形

leetcode85. 最大矩形 hard 传送门 题目: 给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 输入: 输出: 6 [[“1”,“0”,“1”,“0”,“0”], [“1”,“0”,“1”,“1”,“1”], [“1”,“1”,“1”,“1”,“1”], [“1”,“0”,“0”,“1”,“0”]] 参考解答 遍历每一行,动态统计每一列的高度 就转换成84题了 public int maximalRectangle(char[][] matrix 阅读详情

题意:找子矩阵全为1的最大面积

维护以每一行为底的高度h[j],跑2n次直方图的最大矩形面积的单调栈

class Solution {
public:
    int maximalRectangle(vector<vector<char>>& matrix) {
        int n=matrix.size();if(n==0)return 0;
        int m=matrix[0].size();
        int ans=0;
        vector<int>h(m,0);//h[j]:以第i行为底,第j列的高度
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(i==0){
                    h[j]=matrix[i][j]-'0';
                }else{
                    h[j]=(matrix[i][j]=='1')?(h[j]+1):0;
                }
            }
            //for(int j=0;j<m;j++)printf("%d ",h[j]);puts("");
            ans=max(ans,largestRectangleArea(h));
        }
        return ans;
        
    }

    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;
    }
};

 

【力扣-困难】85. 最大矩形 给定一个仅包含0和1、大小为rows x cols的二维二进制矩阵,找出只包含1的最大矩形,并返回其面积。 示例 1: 输入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]] 输出:6 解释:最大矩形如上图所示。 示例 2: 输入:matrix = [] 输出:0 示例 3: 输入:matrix = [["0"]] 输出:0 示例 4... 阅读详情

相关推荐

Leetcode85. 最大矩形

题目描述:给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 解法:动态规划 先将矩形对每一列从上到下进行合并,得到 然后再对每一位置的数进行遍历,具体操作如下: 如果arr[i][j] * cols <= max,即即使一整行都符合条件都无法超过最大值,剪枝跳过 count初始化为0,从该位置向前遍历,如果arr[i][j - 1] >= arr[i][j],count++;同理向右遍历,最后得到该位置的最大矩形面积

qq_43556545的博客 431

LeetCode 力扣 85. 最大矩形

题目描述(困难难度) 给一个只有 0 和 1 的矩阵,输出一个最大的矩形的面积,这个矩形里边只含有 1。 解法一 暴力破解 参考这里-solution-for-your-reference>),遍历每个点,求以这个点为矩阵右下角的所有矩阵面积。如下图的两个例子,橙色是当前遍历的点,然后虚线框圈出的矩阵是其中一个矩阵。 怎么找出这样的矩阵呢?如下图,如果我们知道了以这个点结尾的连续 1 的个数的...

wind_liang的博客 2365

【困难】力扣算法题解析LeetCode85:最大矩形

本文介绍了求解二维二进制矩阵中最大全1矩形面积的高效算法。核心思想是将问题转化为柱状图中的最大矩形问题(LeetCode 84题),通过动态规划预处理高度数组,再使用单调栈快速计算最大面积。具体步骤包括:1)逐行计算高度数组;2)对每行高度数组应用单调栈算法求解最大矩形;3)维护全局最大值。Java实现代码详细展示了这一过程,并分析了时间复杂度和空间复杂度。该算法时间复杂度为O(rows×cols),空间复杂度为O(cols),能高效处理200×200规模的矩阵。

ylumwd的博客 515

LeetCode 85:最大矩形

给定仅含0和1的二维矩阵,需找到1。O(n²m²)

m0_75126572的博客 1735

LeetCode 第85题:最大矩形

通过上述详细的解析和多种解法的对比,相信大家对LeetCode第85题的解法有了深入的理解。本文介绍了暴力法、利用柱状图最大矩形的单调栈法和动态规划法,每一种方法都有其优缺点。暴力法虽然简单直观,但效率较低;单调栈法利用栈的特性,提高了计算效率;动态规划法通过记录每一行的状态,解决了矩阵的最大矩形问题。希望大家能够根据具体情况选择合适的解法,并灵活应用到其他类似的矩阵问题中。最后,希望大家在刷题的过程中,不断总结,不断进步。祝大家都能在算法的道路上走得更远!

Gemini的博客 486

七步设计高频变压器

七步设计高频变压器

m0_71394959的博客 5401

力扣85-最大矩形(巧妙利用上一题解答 Java版题解)

力扣85-最大矩形 一、原题题目 1.1 题目   给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 1.2 示例 示例1: 输入: matrix = [[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”,“0”,“0”,“1”,“0”]]输出: 6解释: 最大矩形如上图所示。 示例2: 输入: matrix = []输出: 0

ItDaChuang的博客 486

国产数据库迁移必看:达梦到ES的CDC方案优化全记录(含完整代码)

本文详细记录了从达梦数据库到Elasticsearch的CDC方案优化全过程,涵盖触发器方案局限性、Debezium架构优势及完整代码实现。通过Flink集成和性能调优,实现毫秒级延迟同步,显著降低数据库负载,为国产数据库迁移提供可落地的技术方案。

weixin_29079671的博客 497

[LeetCode] 85、最大矩形

题目描述 给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 示例: 输入: [ ["1","0","1","0","0"], ["1","0","1","1","1"], ["1","1","1","1","1"], ["1","0","0","1","0"] ] 输出: 6 解题思路 这一题的算法本质上和84题Largest Recta...

aift的专栏 424

Win10网络图标消失,网络图标变成灰色,打开网络设置闪退等问题解决

介绍 主要解决如下问题 网络图标消失 常用方法配置中出现的网络图标变成灰色没有办法打开 打开网络和Internet闪退 错误提示`网络发现已关闭。网络计算机和设备不可见。请启动网络和共享中心的网络发现。 连不上网,诊断结果为 依赖服务或组无法启动 这个问题大概率通过重装系统不能解决,请大家谨慎测试之后最后选择重装这个路线。 方法1:这一步一定要做(卸载三方软件) 把360安全卫士,软件管家这些东西都卸载掉。 我的问题一开始就是这个软件引起的,可能他检测到我还给台式机配了无线网卡,然后就把有线网络的一些

呆呆象呆呆的博客 3万+

深入解析Panfrost驱动:Mali-GPU开源驱动的架构与实现

本文深入解析了Panfrost驱动作为Mali-GPU开源驱动的架构与实现。从诞生背景到硬件架构演进,详细介绍了Panfrost如何突破ARM闭源策略,实现全栈支持。文章还探讨了驱动设计中的关键技术挑战与性能优化策略,为开发者提供了实用的编译部署指南和性能调优方法。

weixin_30790841的博客 552

力扣85 最大矩形的简单算法求解

1. 题目 给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 示例: 输入: [ ["1","0","1","0","0"], ["1","0","1","1","1"], ["1","1","1","1","1"], ["1","0","0","1","0"] ] 输出: 6 2. 算法分析 回顾力扣84题,我们可以算一个数组的最...

胃病的不良少彦 816

光模块组成

时钟恢复电路(Clock Data Recovery,简称CDR)是光模块中的关键组成部分,CDR的作用主要是从接收到的信号中提取出数据序列,并且恢复出与数据序列相对应的时钟时序信号,从而还原接收到的具体信息。因为光信号传输至一定距离的时候,通常是长距离传输,其波形会出现一定程度的失真,接收端接收到的信号是一个个长短不一的脉冲信号,这个时候在接收端,我们就无法得到我们需要的数据。所以,这个时候就需要有信号的再生,信号的再生功能为再放大、再整形和再定时,其中的再定时指的就是CDR时钟数据恢复。

han_better的博客 5721

LeetCode 85 - 最大矩形

题目描述 85. 最大矩形 解法一:柱状图+DP(Python) 详细参考 官方题解 class Solution: def maximalRectangle(self, matrix: List[List[str]]) -> int: maxarea = 0 dp = [[0] * len(matrix[0])for _ in range(len(m...

Aries_young的博客 367

手把手教你用LIO-SAM搞定激光雷达和IMU联合标定(附避坑指南)

本文详细介绍了使用LIO-SAM进行激光雷达与IMU联合标定的全流程,包括标定原理、工具选型、硬件配置、数据采集、LI_calib标定步骤及LIO-SAM集成验证。特别提供了避坑指南和参数优化技巧,帮助开发者高效完成传感器标定,提升自动驾驶和机器人定位精度。

hadoop5ranger的博客 995

详细指南:如何在TI C2000基于C28x的微控制器上部署FreeRTOS_C语言实现

FreeRTOS是一个小型、开源、实时的嵌入式操作系统内核。它为多种微控制器和处理器提供了支持,包括ARM、AVR、MSP430和PIC等。小型和轻量级:适合资源受限的嵌入式系统。实时性:可以满足严格的实时要求。多任务支持:支持多任务并发执行。内存管理:提供了多种内存管理策略。模块化设计:用户可以根据需要选择所需的功能模块。TI C2000系列微控制器是专为实时控制应用设计的。高性能C28x核:提供了高速的浮点运算能力。丰富的外设:包括PWM、ADC、DAC、通信接口等。低功耗。

qq_38334677的博客 1606

leetcode 85 最大矩形

暴力解法 https://leetcode-cn.com/problems/maximal-rectangle/ 遍历数组,让每个点作为数组右下角元素时,然后求面积。 第一步,先求宽度为1时的长度len。计算此时的矩阵面积maxSize。 第二步,宽度加1,计算上一行的长度tlen。若tlen为0,则跳出。若非0,此时宽度为2的矩阵长度为min(len, tlen)。计算此时的矩阵面积maxSize = max(maxSize, min(len, tlen) * hei) 一直重复步骤二直至跳出循环

qq_52993545的博客 255

比NTP还牛逼的时间同步协议:1588v2,亚微秒级!

1588v2,又称为Precision Time Protocol Version 2,即精密时间协议的第二版本,或称为PTPv2,是一种精密时间同步协议标准,旨在实现网络中设备之间的高精度时间同步。该协议由IEEE标准组织发布,并在网络测量和控制系统中得到广泛应用。1588v2的主要目的是在计算机网络中提供高度准确的时间同步。它可用于确保不同设备之间的时钟同步,从而协调它们的操作。这对于需要协同工作的系统、无线通信基站等具有关键性的应用非常重要。

网络技术联盟站 4281

LeetCode第 85 题:最大矩形(C++)

85. 最大矩形 - 力扣(LeetCode) 和LeetCode第 84 题:柱状图中最大的矩形(C++)_zj-优快云博客题类似,将每一行都看作一个柱形图: 第一层柱状图的高度["1","0","1","0","0"],最大面积为1; 第二层柱状图的高度["2","0","2","1","1"],最大面积为3; 第三层柱状图的高度["3","1","3","2","2"],最大面积为6; 第四层柱状图的高度["4","0","0","3","0"],最大面积为4; 然后套用84题的计算方法:

zj 1076

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LeetCode--85.最大矩形(单调栈)

最大矩形(单调栈)1. 题目描述2. 题目分析3. C语言实现 1. 题目描述 难度:困难 2. 题目分析 这道题目似曾相识啊,最大矩形面积的问题我们在LeetCode84.柱状图中最大的矩形也遇到过类似的问题,在84题中,我们应用了单调栈的方法,实现了O(n)的时间复杂度。在这一题中,我们可以将每一层都看做一个输入,比如第一层可以看做84题中的输入[1, 0, 1, 0, 0],这一层的最大矩...

魔法师の屋子★↓☆ 4261

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LeetCode 85 最大矩形

LeetCode 85 最大矩形 题目链接 给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 示例 1: 输入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]] 输出:6 解释:最大矩形如上图所示。 示例 2: 输入:matrix = [] 输出:0 示例 3: 输入:matrix

旺崽的博客 1987

VC中sqlite的使用

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

leetcode 85:最大矩形

leetcode 85:最大矩形 85. 最大矩形 给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 示例 1: 输入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]] 输出:6 解释:最大矩形如上图所示。 示例 2: 输入:matrix = [] 输出:0 示例

yingmu__的博客 332

85. 最大矩形 - 力扣(LeetCode)

题目描述 给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 示例: 输入: [ [“1”,“0”,“1”,“0”,“0”], [“1”,“0”,“1”,“1”,“1”], [“1”,“1”,“1”,“1”,“1”], [“1”,“0”,“0”,“1”,“0”] ] 输出: 6 题解1 dp[i][j]表示从左边到(i, j)处连续1的个数。它应该满足式1 d...

Onwaier的博客 751

LeetCode第85题_最大矩形

给定一个仅包含0和1的二维二进制矩阵,找出只包含1的最大矩形,并返回其面积。

qq_40263592的博客 1204

leetcode最大矩形_LeetCode刷题实战85: 最大矩形

算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !今天和大家聊的问题叫做最大矩形,我们先来看题面:https://leetcode-cn.com/problems/maximal-rectangle/Given a rows x cols binar...

weixin_42393272的博客 608
上一篇: [leetcode]84. 柱状图中最大的矩形
下一篇: KMP模板 java版
animalcoder
博客等级 码龄9年 43粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值