/*
@v7fgg
执行用时:19 ms, 在所有 Java 提交中击败了20.59%的用户
内存消耗:43.5 MB, 在所有 Java 提交中击败了13.33%的用户
2020年7月9日 15:05
*/
class Solution {
public int maximalRectangle(char[][] matrix) {
if(matrix.length==0||matrix[0].length==0){return 0;}
int[][] zuida1=new int[matrix.length][matrix[0].length];
//zuida1表示的这一行到这个数,一共多少连续1
for(int i=0;i<matrix.length;i++){
int max1=0;
for(int j=0;j<matrix[0].length;j++){
if(matrix[i][j]=='0'){
max1=0;
}
else{
max1++;
}
zuida1[i][j]=max1;
}
}
//以下找出ij为右下角的最大全1矩形
int ans=0;
for(int i=matrix.length-1;i>=0;i--){
for(int j=matrix[0].length-1;j>=0;j--){
if(zuida1[i][j]*(i+1)>ans){
int minK=zuida1[i][j];
for(int k=i;k>=0;k--){
minK=Math.min(minK,zuida1[k][j]);
ans=Math.max(ans,minK*(i-k+1));
}
}
}
}
return ans;
}
}
leetcode 85.最大矩形
最新推荐文章于 2021-04-04 15:25:55 发布