最大正方形
题目描述
给定一个由0和1组成的2维矩阵,返回该矩阵中最大的由1组成的正方形的面积
代码
import java.util.*;
public class Solution {
/**
* 最大正方形
* @param matrix char字符型二维数组
* @return int整型
*/
public int solve (char[][] matrix) {
int row = matrix.length;
int col = matrix[0].length;
int[][] dp = new int[row][col];
//初始化头列
for(int i=0; i<row; i++){
dp[i][0] = matrix[i][0]-'0';
}
//初始化头行
for(int i=1; i<col; i++){
dp[0][i] = matrix[0][i]-'0';
}
int max = 0;
for(int i=1; i<row; i++){
for(int j=1; j<col; j++){
if(matrix[i][j]=='1'){
//如果它的上三角任意一个有零,则长度为1
dp[i][j] = Math.min(
Math.min(dp[i-1][j-1],dp[i-1][j]),
dp[i][j-1])+1;
max = Math.max(max, dp[i][j]);
}
}
}
return max*max;
}
}