其他分享
首页 > 其他分享> > 最大正方形

最大正方形

作者:互联网

目录

1 题目描述

在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵内,找到只包含 ‘1’ 的最大正方形,并返回其面积。

示例 1

在这里插入图片描述

输入:matrix =
[[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”,“0”,“0”,“1”,“0”]]
输出:4

示例 2

在这里插入图片描述

输入:matrix = [[“0”,“1”],[“1”,“0”]]
输出:1

示例 3

输入:matrix = [[“0”]]
输出:0

提示

2 解题(Java)

动态规划

class Solution {
    public int maximalSquare(char[][] matrix) {
        int maxSide = 0;
        if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
            return maxSide;
        }
        int rows = matrix.length, columns = matrix[0].length;
        int[][] dp = new int[rows][columns];
        for (int i=0; i<rows; i++) {
            for (int j=0; j<columns; j++) {
                if (matrix[i][j] == '1') {
                    if (i == 0 || j == 0) dp[i][j] = 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]);
            }
        }
        int maxSquare = maxSide * maxSide;
        return maxSquare;
    }
}

3 复杂性分析

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximal-square

标签:最大,maxSide,int,矩阵,正方形,length,dp,matrix
来源: https://blog.csdn.net/sc179/article/details/118051640