zoukankan      html  css  js  c++  java
  • 221. Maximal Square

    Given a 2D binary matrix filled with 0's and 1's, find the largest square containing only 1's and return its area.

    For example, given the following matrix:

    1 0 1 0 0
    1 0 1 1 1
    1 1 1 1 1
    1 0 0 1 0
    

    Return 4.

    本题一定要注意,做动态规划方法的时候,dp里面的值不能够存储面积属性,之能存储边长。因为面积属性到时候还需要开平方根。代码如下:

    public class Solution {

        public int maximalSquare(char[][] matrix) {

            if(matrix==null||matrix.length==0||matrix[0].length==0) return 0;

            int m = matrix.length;

            int n = matrix[0].length;

            int max = 0;

            int[][] dp = new int[m][n];

            for(int i=0;i<m;i++){

                if(matrix[i][0]=='1') dp[i][0] = 1;

                max = Math.max(dp[i][0],max);

            }

            for(int i=0;i<n;i++){

                if(matrix[0][i]=='1') dp[0][i] = 1;

                max = Math.max(dp[0][i],max);

            }

            for(int i=1;i<m;i++){

                for(int j=1;j<n;j++){

                    if(matrix[i][j]=='1'){

                        if(dp[i-1][j-1]!=0&&dp[i-1][j]!=0&&dp[i][j-1]!=0){

                            dp[i][j] = Math.min(dp[i-1][j-1],Math.min(dp[i][j-1],dp[i-1][j]))+1;

                            max = Math.max(max,dp[i][j]);

                        }else{

                            dp[i][j] = 1;

                        }

                    }

                }

            }

            return max*max;

        }

    }

  • 相关阅读:
    mvc+struct1+struct2
    JSP中动态include与静态include的区别
    村上春树的经典语录合集
    50. 数组剔除元素后的乘积
    46. 主元素
    Centos7:yum安装MySQL5.7后如何设置root密码
    产品经理人的持续交付和DevOps实践
    利用jenkins实现自动构建、部署,提升团队开发效率
    基于lua-nginx-module(openresty)的WEB应用防火墙
    Nginx+Lua+MySQL/Redis实现高性能动态网页展现
  • 原文地址:https://www.cnblogs.com/codeskiller/p/6362011.html
Copyright © 2011-2022 走看看