求给出的二维数组里面矩阵全为1的最大矩阵。
Given a 2D binary matrix filled with 0’s and 1’s, find the largest rectangle containing all ones and return its area.借助求柱形图的最大范围。
public class Solution {
public int maximalRectangle(char[][] matrix) {
if(matrix.length<1) return 0;
int max=0;
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[i].length;j++){
if(matrix[i][j]=='1'){
int mh=1;
int m=1;
for(int h=i;h<matrix.length;h++){
if(matrix[h][j]!='1') break;
int w,n=1;
for(w=j+1;w<matrix[h].length;w++){
if(matrix[h][w]!='1') break;
n++;
}
if(h==i) mh=n;
if(n<mh) mh=n;
if(m*mh>max) max=m*mh;
m++;
}
}
}
}
return max;
}
}