暴力解法
实在没办法了,就一定要用暴力解法试一试
class solution{
//暴力遍历解法
public int maximalRectangle(char[][] matrix) {
int m = matrix.length;
if(m == 0) return 0;
int n = matrix[0].length;
int max_area = 0;
//从矩形左上角遍历到右下角的过程中,不能出现0
for(int l_i = 0; l_i < m; l_i++){
for(int l_j = 0; l_j < n; l_j++){
//矩形左上角的点不能为0
if(matrix[l_i][l_j] == '0'){
continue;
}
//如果矩阵剩下的未被遍历的面积小于max_area,则返回max_area
if((m * n - (l_i + 1) * (l_j + 1)) <= max_area){
return max_area;
}
//改变矩形右下角的位置,寻找最大矩形面积
int r_j_max = n;
for(int r_i = l_i; r_i < m; r_i++){
int r_j = l_j;
if(matrix[r_i][r_j] == '0')
break;
while (r_j < r_j_max && matrix[r_i][r_j] == '1'){
++r_j;
}
max_area = Math.max(max_area, (r_i - l_i + 1) * (r_j - l_j));
r_j_max = Math.min(r_j