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;
        
    }
}
相关推荐
Figo_Cheung几秒前
Figo《量子几何学:从希尔伯特空间到全息时空的统一理论体系》(十一)——量子计算几何算法的设计与实现
算法·几何学·量子计算
0 0 0几秒前
CCF-CSP 36-2 梦境巡查(dream)【C++】考点:前缀和
开发语言·c++·算法
VALENIAN瓦伦尼安教学设备1 分钟前
便携式蒸汽阀门漏气检测仪作用
人工智能·嵌入式硬件·算法
plus4s3 分钟前
3月11日(进阶3)
算法
luckycoding5 分钟前
42. 接雨水
leetcode
We་ct7 分钟前
LeetCode 39. 组合总和:DFS回溯解法详解
前端·算法·leetcode·typescript·深度优先·个人开发·回溯
小杍随笔8 分钟前
【Rust中所有符号的作用及使用场景详解】
java·算法·rust
MicroTech202512 分钟前
微算法科技(NASDAQ: MLGO)探索量子机器学习算法在预测模型中的应用,利用量子核方法提升复杂模式识别能力
科技·算法·机器学习
absunique1 小时前
算法设计模式看编程思维的抽象能力的技术6
算法·设计模式
DeepModel2 小时前
【概率分布】Beta分布详解
算法·概率论