zoukankan      html  css  js  c++  java
  • 50.Maximal Square(最大正方形)

    Level

      Medium

    题目描述:

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

    Example:

    Input: 
    
    1 0 1 0 0
    1 0 1 1 1
    1 1 1 1 1
    1 0 0 1 0
    
    Output: 4
    

    思路分析:

      动态规划思想,要找到最大的正方形,我们以dp[ i ] [ j ]表示,以第i行第j列的1元素为正方形的右下角的正方形边长。从左上角开始,如果当前位置为1,那么到当前位置包含的最大正方形边长为左/左上/上的值中的最小值加一,因为边长是由短板控制的。注意返回的是面积,不要因为小问题而出错。

    代码:

    public class Solution{
        public int maximalSquare(char [][]matrix){
            if(matrix==null||matrix.length==0)
                return 0;
            int [][]dp=new int [matrix.length+1][matrix[0].length+1];  //dp[i][j]表示,以第i行第j列的1元素为正方形的右下角的正方形边长
            int result=0;
            for(int i=1;i<=matrix.length;i++){
                for(int j=1;j<=matrix[0].length;j++){
                    if(matrix[i-1][j-1]=='1'){
                        dp[i][j]=Math.min(Math.min(dp[i-1][j],dp[i][j-1]),dp[i-1][j-1])+1;
                        result=Math.max(result,dp[i][j]);
                    }
                }
            }
            return result*result;
        }
    }
    
  • 相关阅读:
    2020软件工程作业02
    第一次作业
    伪造IP
    Windows 上安装metasploit
    Kali安装 Typora
    在linux系统中安装调用汉语打字软件
    2020 年 10 月 10 日跑步随想
    最长公共前缀
    N皇后
    一道有趣的异步题
  • 原文地址:https://www.cnblogs.com/yjxyy/p/11087439.html
Copyright © 2011-2022 走看看