最大矩阵
给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。
示例:
/**
* @param {character[][]} matrix
* @return {number}
*/
var maximalRectangle = function(matrix) {
let max_length = 0;
//横着的连续的1的个数
for(let i =0;i<matrix.length;i++){
for(let j=0;j<matrix[0].length;j++){
k = 0;
right = j;
while(matrix[i][right]==="1"&&right<matrix[0].length){
right ++;
k++;
}
matrix[i][j] = k;
}
}
//纵着的连续的个数
for(let i=0;i<matrix.length;i++){
for(let j=0;j<matrix[0].length;j++){
//纵向
if(matrix[i][j]!=0){
let max =matrix[i][j];
let right = i;
//从当前位置开始找到不是1的位置
while(right<matrix.length&&matrix[right][j]>=1) right++;
right --;//使得right 执行了最后一个为1的字符
while(right>i){
let min = Number.MAX_VALUE;
for(let k=i;k<=right;k++){
if(min>matrix[k][j]){
min = matrix[k][j];
}
}
if((right-i+1)*min>max){
max = (right-i+1)*min;
}
right --;
}
matrix[i][j] = max;
if(max>max_length){
max_length = max;
}
}
}
}
return max_length;
};
实现:1.横向计算每个元素连续的1的个数
2.纵向计算 每个元素元素最大的连续出现元素的个数
3.纵向计算之后数组中的最大1的个数就是矩形的面积
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximal-rectangle

浙公网安备 33010602011771号