题目地址(221. 最大正方形)

Posted 潜行前行

tags:

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

题目地址(221. 最大正方形)

https://leetcode-cn.com/problems/maximal-square/

题目描述

在一个由 '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


 

提示:

m == matrix.length
n == matrix[i].length
1 <= m, n <= 300
matrix[i][j] 为 '0' 或 '1'

关键点

  • 依赖 dp[i-1][j-1] 的最大正方形 数

代码

  • 语言支持:Java

Java Code:


class Solution 
    public int maximalSquare(char[][] matrix) 
        int[][] dp = new int[matrix.length][matrix[0].length];
        int res = 0;
        for(int i=0;i<matrix.length;i++)
            for(int j=0;j<matrix[0].length;j++)
                if(i == 0 || j==0 || dp[i-1][j-1] == 0 || matrix[i][j] == '0' )
                    dp[i][j] = matrix[i][j] - '0';
                else
                    dp[i][j] = 1;
                    int n = dp[i-1][j-1];
                    for(int k = 1; k<=n; k++)
                        if(matrix[i-k][j] == '1' && matrix[i][j-k] == '1')
                            dp[i][j] += 1 ;
                        else
                            break;
                        
                    
                
                res = Math.max(res,dp[i][j]);
            
        
        return res * res;
    


创作打卡挑战赛 赢取流量/现金/CSDN周边激励大奖

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

221最大正方形

[LeetCode]最大系列(最大正方形221,最大加号标志764)

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

221. 最大正方形

leetcode221.最大正方形

leetcode221.最大正方形