最大矩阵
给定一个仅包含 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