public class Solution {
public int maximalRectangle(char[][] matrix) {
int row = matrix.length;
if (row==0) return 0;
int col = matrix[0].length;
int[][] ones = new int[row][col];
int max = 0;
for (int i=0; i<row; i++) {
for(int j=0; j<col; j++) {
if (matrix[i][j]=='1') {
if (j==0) ones[i][j] = 1;
else ones[i][j] = ones[i][j-1]+1;
}
}
}
for (int i=0; i<row; i++) {
for (int j=0; j<col; j++) {
if (ones[i][j]!=0) {
int minI = i;
int minWidth = ones[i][j];
while (minI>=0) {
minWidth = Math.min(minWidth, ones[minI][j]);
int area = minWidth*(i-minI+1);
max = Math.max(max, area);
minI--;
}
}
}
}
return max;
}
}
没有评论:
发表评论