[LeetCode]Maximal Square

来源:互联网 发布:dnf梦幻装备源码 编辑:程序博客网 时间:2024/06/07 17:16

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 01 0 1 1 11 1 1 1 11 0 0 1 0
Return 4.

动态规划:

dp[i][j]=Math.min(Math.min(dp[i-1][j],dp[i][j-1]),dp[i-1][j-1])+1;//状态转换方程

public class Solution {    public int maximalSquare(char[][] matrix) {        if(matrix.length==0||matrix[0].length==0) return 0;        int[][] dp=new int[matrix.length][matrix[0].length];        int re=0;        for(int i=0;i<matrix.length;i++){        dp[i][0]=matrix[i][0]=='1'?1:0;        re=Math.max(dp[i][0],re);        }        for(int i=0;i<matrix[0].length;i++){        dp[0][i]=matrix[0][i]=='1'?1:0;        re=Math.max(dp[0][i],re);        }        for(int i=1;i<matrix.length;i++){        for(int j=1;j<matrix[0].length;j++){        if(matrix[i][j]=='0') dp[i][j]=0;        else dp[i][j]=Math.min(Math.min(dp[i-1][j],dp[i][j-1]),dp[i-1][j-1])+1;        re=Math.max(re,dp[i][j]);        }        }        return re*re;    }}


原创粉丝点击