public class Solution {
public int maximalSquare(char[][] matrix) {
if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
return 0;
}
int r = matrix.length, c = matrix[0].length;
int[][] edges = new int[r][c];
int max = 0;
for (int i = 0; i < matrix.length; i++) {
edges[i][0] = matrix[i][0] == '1' ? 1 : 0;
max = Math.max(max, edges[i][0]);
}
for (int i = 0; i < matrix[0].length; i++) {
edges[0][i] = matrix[0][i] == '1' ? 1 : 0;
max = Math.max(max, edges[0][i]);
}
for (int i = 1; i < matrix.length; i++) {
for (int j = 1; j < matrix[0].length; j++) {
edges[i][j] = matrix[i][j] == '1' ? 1 : 0;
if (edges[i][j] == 1) {
edges[i][j] = 1 + Math.min(edges[i-1][j-1], Math.min(edges[i-1][j], edges[i][j-1]));
max = Math.max(edges[i][j], max);
}
}
}
return max*max;
}
}
Maximal Square
最新推荐文章于 2021-04-29 20:57:26 发布