LeetCode 221. 最大正方形

Posted 数据结构和算法

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 221. 最大正方形相关的知识,希望对你有一定的参考价值。

截止到目前我已经写了 500多道算法题,其中部分已经整理成了pdf文档,目前总共有1000多页(并且还会不断的增加),大家可以免费下载
下载链接https://pan.baidu.com/s/1hjwK0ZeRxYGB8lIkbKuQgQ
提取码:6666

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

有可能是下面这种情况,就是左边或者上边的某一个高度小于dp[i-1][j-1]的值,要想构成最大的正方形我们只能取最小的。

在这里插入图片描述

也有可能是下面这种,就是左边和上边的高度都不小于dp[i-1][j-1]的值。

在这里插入图片描述
在这里插入图片描述

public int maximalSquare(char[][] matrix) {
    //二维矩阵的宽和高
    int height = matrix.length;
    int width = matrix[0].length;
    int[][] dp = new int[height + 1][width + 1];
    int maxSide = 0;//最大正方形的宽
    for (int i = 1; i <= height; i++) {
        for (int j = 1; j <= width; j++) {
            if (matrix[i - 1][j - 1] == '1') {
                //递推公式
                dp[i][j] = Math.min(dp[i - 1][j], Math.min(dp[i - 1][j - 1], dp[i][j - 1])) + 1;
                //记录最大的边长
                maxSide = Math.max(maxSide, dp[i][j]);
            }
        }
    }
    //返回正方形的面积
    return maxSide * maxSide;
}

在这里插入图片描述

以上是关于LeetCode 221. 最大正方形的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 221. 最大正方形 c++/java详细题解

leetcode 221. 最大正方形(dp)

Leetcode 221.最大的正方形

[LeetCode] 221. 最大正方形(DP)

leetcode221.最大正方形

leetcode221.最大正方形