LeetCode 221. 最大正方形

更多题解尽在 https://sugar.matrixlab.dev/algorithm 每日更新。
组队打卡,更多解法等你一起来参与哦!

LeetCode 221. 最大正方形,难度中等

DP

解题思路:构建一个 dp 数组,其中 dp[i][j] 的含义是位置 (i, j) 为右下角的最大正方形的边长。

动态转移方程

  • 如果 matrix[i][j] == '0',那么 dp[i][j] = 0,因为位置 (i, j) 不能成为正方形的一部分。

  • 如果 matrix[i][j] == '1',那么 dp[i][j] 的值取决于其左边、上边和左上角的三个位置的 dp 值。具体来说,dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + 1

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 maxSide = 0;
        int[][] dp = new int[rows][cols];

        // 遍历矩阵
        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;
                    } else {
                        // dp[i][j] 等于左、上和左上角三个位置的 dp 值的最小值加 1
                        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;
    }
}

相关推荐

  1. LeetCode 221. 正方形

    2024-07-20 14:02:03       39 阅读
  2. 221. 正方形

    2024-07-20 14:02:03       66 阅读
  3. 力扣221. 正方形

    2024-07-20 14:02:03       60 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 14:02:03       169 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 14:02:03       185 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 14:02:03       155 阅读
  4. Python语言-面向对象

    2024-07-20 14:02:03       169 阅读

热门阅读

  1. Vue中Key的作用

    2024-07-20 14:02:03       31 阅读
  2. VMware 虚拟机 ping 不通原因排查

    2024-07-20 14:02:03       37 阅读
  3. 数据响应式(Object.defineProperty和Proxy)

    2024-07-20 14:02:03       31 阅读
  4. 云计算的三种服务模式

    2024-07-20 14:02:03       33 阅读
  5. wps的xls文件,如何过滤掉空白没有数据的行

    2024-07-20 14:02:03       32 阅读
  6. Provider(5) - AdjustChannelsBufferProvider

    2024-07-20 14:02:03       29 阅读
  7. lua 游戏架构 之 SceneLoad场景加载(一)

    2024-07-20 14:02:03       38 阅读
  8. Thread类的基本用法

    2024-07-20 14:02:03       32 阅读
  9. C?C++?

    2024-07-20 14:02:03       30 阅读
  10. ArcGIS Pro SDK (九)几何 10 弧

    2024-07-20 14:02:03       26 阅读