LeetCode 热题 HOT 100之221. 最大正方形(击败了92.92%的用户)

题目:

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

示例:

LeetCode 热题 HOT 100之221. 最大正方形(击败了92.92%的用户)_第1张图片

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

思路:

动态规划,思路也比较清楚。

dp[ i ] [ j ]保存的的是正方形右下角的位置能达到的边长最大值

最重要的是推递推公式

ij位置的值应该是左,左前,上中最小的加一

复杂度:

时间复杂度:O(mn) 

空间复杂度:O(mn)

代码:

 public int maximalSquare(char[][] matrix) {
        int maxSide = 0;
        int m = matrix.length;
        int n = matrix[0].length;
        int[][] dp = new int[m][n];
        //先考虑特殊情况
        if(m==0 || n==0 || matrix==null){
            return maxSide;
        }

        //遍历
        for(int i =0;i

LeetCode 热题 HOT 100之221. 最大正方形(击败了92.92%的用户)_第2张图片

你可能感兴趣的:(LeetCode,热题,HOT,100,随机开始,leetcode,算法,动态规划,矩阵,数据结构)