思路与1227相似,求出以某个点为右下角组成的最大正方形即可
修改:
1、给出的数组是char类型的!!!转成int
2、给出一个空数组!!!空返回0,一定注意特殊情况!!!
3、最终求面积,不是边长,在最后返回之前主机平方
代码:
package com.leetCode.dp;
public class leet221 {
public static void main(String[] args) {
System.out.println((int)'0');
}
public int maximalSquare(char[][] matrix) {
int m=matrix.length;
if(m==0) return 0;
int n=matrix[0].length;
int[][] dp = new int[m][n];
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
dp[i][j]=(int)matrix[i][j]-48;
}
}
int ans=0;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
if(i==0||j==0)
{
dp[i][j]=dp[i][j];
ans=Math.max(ans, dp[i][j]);
continue;
}
else if(dp[i][j]==1)
{
dp[i][j]=Math.min(Math.min(dp[i-1][j], dp[i-1][j-1]), dp[i][j-1])+1;
ans=Math.max(ans, dp[i][j]);
}else dp[i][j]=0;
}
}
ans*=ans;
return ans;
}
}