力扣221. 最大正方形

动态规划

  • 思路:
    • 假设 dp[i][j] 是第 i 行,第 j 列为右底点最大正方形边长;
    • 则对应的状态转移方程
      • s[i][j] = '0', dp[i][j] = 0
      • s[i][j] = '1' 时,
        • 如果是第1行或者第一列,dp[i][j] = 1;
        • 其余情况下,dp[i][j] 等于其为右底点边长为2的周围正方形格子最大正方形数中最小值 + 1;
    • 使用 maxSide 记录最大边长;
class Solution {
public:
    int maximalSquare(vector<vector<char>>& matrix) {
        if (matrix.size() == 0 || matrix[0].size() == 0) {
            return 0;
        }

        int maxSide = 0;
        int row = matrix.size();
        int column = matrix[0].size();
        std::vector<std::vector<int>> dp(row, std::vector<int>(column));
        for (int i = 0; i < row; ++i) {
            for (int j = 0; j < column; ++j) {
                if (matrix[i][j] == '1') {
                    if (i == 0 || j == 0) {
                        dp[i][j] = 1;
                    } else {
                        dp[i][j] = std::min(std::min(dp[i - 1][j], dp[i][j - 1]) , dp[i - 1][j - 1]) + 1;
                    }

                    maxSide = std::max(maxSide, dp[i][j]);
                }
            }
        }

        return maxSide * maxSide;
    }
};

相关推荐

  1. 221. 正方形

    2023-12-16 10:14:02       58 阅读
  2. 221. 正方形

    2023-12-16 10:14:02       61 阅读
  3. _动态规划4—正方形

    2023-12-16 10:14:02       39 阅读
  4. LeetCode 221. 正方形

    2023-12-16 10:14:02       26 阅读
  5. 】164. 间距

    2023-12-16 10:14:02       36 阅读

最近更新

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

    2023-12-16 10:14:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-16 10:14:02       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-16 10:14:02       82 阅读
  4. Python语言-面向对象

    2023-12-16 10:14:02       91 阅读

热门阅读

  1. 使用OpenCV和PIL库读取图片的区别

    2023-12-16 10:14:02       58 阅读
  2. php语言的基础用法有哪些

    2023-12-16 10:14:02       62 阅读
  3. ElasticSearch之cat segments API

    2023-12-16 10:14:02       62 阅读
  4. centos7编译grpc源码

    2023-12-16 10:14:02       65 阅读
  5. Vue2面试题:说一下路由模式hash和history的区别?

    2023-12-16 10:14:02       52 阅读
  6. FPGA——spi代码篇

    2023-12-16 10:14:02       50 阅读
  7. std::iota 函数简单使用

    2023-12-16 10:14:02       59 阅读
  8. Cookie、Session、Token的区别与联系

    2023-12-16 10:14:02       64 阅读
  9. 本地计算机连接两个Github账号

    2023-12-16 10:14:02       57 阅读
  10. loki swift_storage_config

    2023-12-16 10:14:02       57 阅读