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;
    }
}
相关推荐
CoovallyAIHub4 分钟前
YOLO-Maste开源:首个MoE加速加速实时检测,推理提速17.8%!
深度学习·算法·计算机视觉
清铎8 分钟前
leetcode_day13_普通数组_《绝境求生》
数据结构·算法
涵涵(互关)10 分钟前
JavaScript 对大整数(超过 2^53 - 1)的精度丢失问题
java·javascript·vue.js
进击的丸子10 分钟前
基于虹软Linux Pro SDK的多路RTSP流并发接入、解码与帧级处理实践
java·后端·github
小北方城市网11 分钟前
微服务架构设计实战指南:从拆分到落地,构建高可用分布式系统
java·运维·数据库·分布式·python·微服务
开开心心_Every13 分钟前
离线黑白照片上色工具:操作简单效果逼真
java·服务器·前端·学习·edge·c#·powerpoint
予枫的编程笔记13 分钟前
【Java进阶】深入浅出 Java 锁机制:从“单身公寓”到“交通管制”的并发艺术
java·人工智能·
while(1){yan}16 分钟前
SpringAOP
java·开发语言·spring boot·spring·aop
专注于大数据技术栈17 分钟前
java学习--Collection
java·开发语言·学习
heartbeat..18 分钟前
Spring 全局上下文实现指南:单机→异步→分布式
java·分布式·spring·context