[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

5分钟搞定DataDome滑块验证码:最新Capsolver API实战教程(含代理配置)

本文提供了一份利用Capsolver API快速自动化破解DataDome滑块验证码的实战教程。文章深入剖析了DataDome验证码的环境指纹与行为分析机制,并重点详解了确保成功率的住宅代理配置、API集成步骤及令牌使用等核心环节,帮助开发者高效集成稳定可靠的自动化解决方案。

milk8的博客 494

力扣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

Kali Linux渗透测试:蚁剑(AntSword)三种安装方法与避坑指南

WebShell管理是渗透测试与网络安全攻防演练中的关键技术环节,它允许安全人员在获得初步访问权限后,对目标系统进行文件管理、命令执行和数据库操作等深度控制。其核心原理是通过在Web服务器上植入特定脚本,建立一条隐蔽的远程管理通道。在实战中,一个高效、稳定的WebShell管理工具能极大提升后渗透阶段的工作效率与成功率。蚁剑(AntSword)作为一款功能强大的国产开源工具,凭借其插件化架构和图形化界面,成为众多安全研究人员的首选。本文将聚焦于如何在渗透测试专用操作系统Kali Linux上部署蚁剑,详细对

weixin_34413103的博客 414

[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

ENVI基于Landsat影像构建郑州市2000-2019年遥感生态指数RSEI

本文基于landsat5、landsat7、landsat8三种传感器的影像,使用ENVI软件构建郑州市2000-2019年遥感生态指数RSEI。内含ENVI详细操作、使用的公式以及构建结果。

Lexicopperfield的博客 1万+

图解说明JLink驱动与目标板电源匹配的关键细节

深入讲解JLink驱动安装及使用过程中,如何正确匹配目标板电源,避免常见通信故障。通过图解方式清晰展示关键连接细节,确保调试稳定可靠,是嵌入式开发中不可或缺的实战经验分享。

weixin_42173218的博客 431

力扣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

告别手动翻页!用幻影联动+DLL调用,5分钟搞定通达信分时指标自动选股

本文详细介绍了如何利用幻影联动软件结合DLL调用技术,实现通达信分时指标的自动化选股。通过改造指标代码和配置幻影联动任务,用户可以在5分钟内完成从信号检测到自动报警的全流程,大幅提升短周期交易的效率和准确性。

weixin_42561040的博客 766

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

HanLP的分词

HanLP的分词

sikh_0529的博客 1万+

ZYNQ Petalinux编译系统启动文件实战指南

本文提出的混合编译加速方案实测可将编译时间从45分钟缩短至18分钟,QSPI双启动方案已在工业控制领域成功应用。Xilinx官方UG1144文档(最新v2023.1版)正点原子《ZYNQ嵌入式开发实战》开源项目Meta-Petalinux(GitHub趋势项目)未来展望:随着Versal平台的普及,Petalinux将支持更多AI加速器原生驱动,值得持续关注。

QQ_778132974的博客 812

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

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...

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

visio安装包

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

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

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

魔法师の屋子★↓☆ 4261

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

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

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、付费专栏及课程。

余额充值