在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵内,找到只包含 ‘1’ 的最大正方形,并返回其面积。
解题思路:动态规划
class Solution {
public int maximalSquare(char[][] matrix) {
// 找到最大边即可
int maxSide = 0;
// 动态规划
int rows = matrix.length;
int cols = matrix[0].length;
int[][] dp = new int[rows][cols];
for(int i=0;i<rows;i++) {
for(int j=0;j<cols;j++) {
// 判断
if(matrix[i][j]=='1') {
if(i==0||j==0) {
dp[i][j] = 1;
}else {
dp[i][j] = Math.min(Math.min(dp[i-1][j], dp[i][j-1]), dp[i-1][j-1]) + 1;
}
maxSide = Math.max(maxSide, dp[i][j]);
}
}
}
return maxSide * maxSide;
}
}