Leetcode 最大正方形

java 实现

java 复制代码
class Solution {
    public int maximalSquare(char[][] matrix) {
        //处理特殊情况
        if(matrix == null || matrix.length == 0 || matrix[0].length == 0) return 0;

        int rows = matrix.length;
        int cols = matrix[0].length;
        int[][] dp = new int[rows][cols]; //dp[i][j]的含义是以i,j为右下角的最大正方形边长
        int maxSide = 0; //maxSide是最大边长

        //遍历矩阵
        for(int i = 0; i < rows; i++) {
            for(int j = 0; j < cols; j++) {
                if(matrix[i][j] == '1') {
                    if(i == 0 || j== 0) {
                        dp[i][j] = 1; //第一行或第一列元素所能组成的最大正方形边长只能是1
                    } else {
                        //以当前位置为右下角的最大正方形边长可以通过当前位置左方,上方,左上方这三个位置为右下角的
                        //最大正方形边长的最小值来确定
                        dp[i][j] = Math.min(Math.min(dp[i - 1][j], dp[i][j - 1]), dp[i - 1][j - 1]) + 1;
                    }
                    // 更新最大边长
                    maxSide = Math.max(maxSide, dp[i][j]);
                }
            }
        }
        return maxSide * maxSide;
        
    }
}
相关推荐
暖阳华笺2 分钟前
【高频考点】回溯(暴力搜索)
数据结构·c++·算法·回溯法
hunterkkk(c++)2 分钟前
学习dijkstra算法(c++)
c++·学习·算法
我命由我123457 分钟前
Excel - Excel 覆盖模式与编辑模式
运维·学习·职场和发展·excel·求职招聘·职场发展·运维开发
lightqjx11 分钟前
【算法】数据结构_单调队列
数据结构·算法·单调队列
小四季豆19 分钟前
《数据结构与算法》-顺序表:算法落地的第一个线性结构
c语言·数据结构·算法
8Qi827 分钟前
LeetCode 96:不同的二叉搜索树(Unique Binary Search Trees)—— 题解 ✅
算法·leetcode·职场和发展·动态规划
1892280486128 分钟前
NV041固态MT29F16T08GSLCEM9-QBES:C
人工智能·算法·microsoft·缓存·性能优化
罗超驿41 分钟前
15.LeetCode 30. 串联所有单词的子串(Java):滑动窗口+哈希表详解
算法·leetcode
Marianne Qiqi42 分钟前
非hot100的力扣算法题
数据结构·算法·leetcode
CC数学建模1 小时前
2026第八届中青杯全国大学生数学建模竞赛C题:情绪维度耦合约束的脑电信号情绪识别 (1)完整思路、代码、模型、文章,全网首发高质量分享!
python·算法·数学建模