LeetCode 85题
这个就是硬找了,但是找的算法,我感觉还可以
class Solution {
public int maximalRectangle(char[][] matrix) {
if(null == matrix || 0 == matrix.length) {
return 0;
}
int row = matrix.length;
int col = matrix[0].length;
int area = 0;
int width = 1;
int nextWidth = 1;
for(int i = 0; i < row; i++) {
for(int j = 0; j < col; j++) {
if('0' == matrix[i][j]) {
continue;
}
width = 1;
for(int k = j+1; k < col; k++) {
if('1' == matrix[i][k]) {
width++;
}else {
break;
}
}
if(width > area) {
area = width;
}
for(int m = i+1; m < row; m++) {
if('0' == matrix[m][j]) {
break;
}
if((m-i+1) > area) {
area = m-i+1;
}
nextWidth = 1;
for(int n = j+1; n < j+width && n < col; n++) {
if('1' == matrix[m][n]) {
nextWidth++;
}else {
if(nextWidth < width) {
width = nextWidth;
}
if((m-i+1)*nextWidth > area) {
area = (m-i+1)*nextWidth;
}
break;
}
if(n == j+width-1) {
if((m-i+1)*nextWidth > area) {
area = (m-i+1)*nextWidth;
}
}
}
}
}
if(area == row*col) {
break;
}
}
return area;
}
}