1.题目

2.解法
①二维数组+动态规划
class Solution {
public int maximalSquare(char[][] matrix) {
if(matrix.length == 0 || matrix[0].length == 0) return 0;
int r = matrix.length;
int c = matrix[0].length;
int[][] dp = new int[r][c];
int res = 0;
for(int i = 0; i < r; i++){
for(int j = 0; j < c; 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][j - 1], dp[i - 1][j - 1]), dp[i - 1][j]) + 1;
}
}
res = Math.max(res, dp[i][j]);
}
}
return res * res;
}
}
这篇博客介绍了如何使用二维数组和动态规划算法来寻找矩阵中最大的正方形区域,其中所有元素都为1。算法通过维护一个动态规划矩阵,计算以每个元素为右下角的最大正方形边长,最终返回最大正方形的面积。
821

被折叠的 条评论
为什么被折叠?



