![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/9bd7685f774ee6055903e3d358ec8718.png)
public int maximalSquare(char[][] matrix) {
if(matrix == null || matrix.length == 0 || matrix[0].length == 0){
return 0;
}
int maxSize = 0;
int[][] dp = new int[matrix.length][matrix[0].length];
for(int i = 0; i < matrix.length; i++){
for(int j = 0; j < matrix[0].length; 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;
}
maxSize = Math.max(maxSize, dp[i][j]);
}
}
}
return maxSize * maxSize;
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/dffb50fdc538f499fbe98bf329469c52.png)
public int countSquares(int[][] matrix) {
if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
return 0;
}
int row = matrix.length;
int col = matrix[0].length;
int ans = 0;
int maxSize = 0;
int[][] dp = new int[row][col];
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; 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;
}
}
ans += dp[i][j];
maxSize = Math.max(maxSize, dp[i][j]);
}
}
return ans;
}