Leetcode85 01矩阵中的最大矩形

题目描述

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

解题思路

动态规划的思想,记录每一个位置向上能到达的最大高度,和向左能到达的最大宽度。

在一个点进行遍历时,向左走该点的最大宽度,

每走一步记录当前的最大高度并计算此时的最大面积。

代码实现

java 复制代码
class Solution {
    public int maximalRectangle(char[][] matrix) {
        int m=matrix.length;
        if(m == 0) return 0;
        int n=matrix[0].length;
        int max=0;
        int[][][] dp=new int[m][n][2];
        // 0-> width 1->height
        if(matrix[0][0]=='1'){
            dp[0][0][0]=1;
            dp[0][0][1]=1;
            max=1;
        }
        for (int i=1;i<n;i++){
            if(matrix[0][i]=='1'){
                dp[0][i][0]=dp[0][i-1][0]+1;
                dp[0][i][1]=1;
                max=Math.max(max,dp[0][i][0]);
            }
        }
        for (int i=1;i<m;i++){
            if(matrix[i][0]=='1'){
                dp[i][0][1]=dp[i-1][0][1]+1;
                dp[i][0][0]=1;
                max=Math.max(max,dp[i][0][1]);
            }
        }
        for (int i=1;i<m;i++){
            for (int j=1;j<n;j++){
                if(matrix[i][j]=='1'){
                    dp[i][j][0]=dp[i][j-1][0]+1;
                    dp[i][j][1]=dp[i-1][j][1]+1;
                    int width=dp[i][j][0],height=dp[i][j][1],minHeight=height;
                    for (int k=1;k<=width;k++){
                        minHeight=Math.min(minHeight,dp[i][j-k+1][1]);
                        max=Math.max(max,k*minHeight);
                    }
                }
            }
        }
        return max;
    }
}
相关推荐
小bo波4 小时前
Java Swing 图形用户界面实验 —— 从算术练习到游戏开发的完整实践
java·课程设计·gui·游戏开发·扫雷·swing
咖啡八杯5 小时前
GoF设计模式——备忘录模式
java·后端·spring·设计模式
HjhIron9 小时前
面试常客:字符串算法从入门到进阶
算法·面试
吴佳浩10 小时前
DeepSeek DSpark:Confidence-Scheduled Speculative Decoding 技术解析
人工智能·算法·deepseek
触底反弹12 小时前
🧠 搞懂 Token,才算真正入门大模型——从分词原理到 Embedding 语义实战
javascript·人工智能·算法
SamDeepThinking16 小时前
裁掉那个差程序员后,给你看团队里高手的代码:这个习惯,希望你有
java·后端·程序员
vivo互联网技术16 小时前
ICLR 2026 | 基于后验采样的图像恢复方法LearnIR:人脸去阴影、去雾
人工智能·算法·aigc
朕瞧着你甚好17 小时前
技术雷达 & Java 集成评估报告 — Apache Tika 3.3.1
java·ai编程
浮生望17 小时前
JS字符串与回文算法:从包装类到双指针的面试进阶之路
javascript·算法
黄敬峰17 小时前
面试必刷:从JS底层包装类到双指针,彻底搞懂字符串与回文算法
算法