[C++] LeetCode 85. 最大矩形

2人阅读 评论(0) 收藏 举报
分类:

题目

给定一个填充了 0 和 1 的二进制矩阵,找到最大的只包含 1 的矩形并返回其面积。
例如,给出以下矩阵:
这里写图片描述
返回6

题解

这道题可以参考LeetCode 84. 柱状图中最大的矩形,这道题,那么这里每一行维持一个数组,记录当前矩阵的高度,然后就可以采用84. 柱状图中最大的矩形的方法计算出当前层最大面积,逐层下去,就可以得出最大值
84. 柱状图中最大的矩形求解过程可以参考84. 柱状图中最大的矩形

代码

class Solution {
public:
    int maximalRectangle(vector<vector<char>>& matrix) {
        if(matrix.size()==0||matrix[0].size()==0) return 0;
        int n=matrix.size(),m=matrix[0].size();
        vector<int> height(m,0);
        int res=0;
        for(int i=0;i<n;i++){
            stack<int> area;
            for(int j=0;j<m;j++){
                if(matrix[i][j]=='0') height[j]=0;
                else height[j]+=1;
                if(area.empty()||height[j]>height[area.top()]) area.push(j);
                else{
                    while(!area.empty()&&height[area.top()]>=height[j]){
                        int tmp=area.top();
                        area.pop();
                        int length=0;
                        if(area.empty()) length=j;
                        else length=j-area.top()-1;
                        res=max(res,height[tmp]*length);
                    }
                    area.push(j);
                }
            }
            while(!area.empty()){
                int tmp=area.top();
                area.pop();
                int length=0;
                if(area.empty()) length=m;
                else length=m-area.top()-1;
                res=max(res,height[tmp]*length);
            }
        }
        return res;
    }
};
查看评论

一步一步用Delphi6实现Web Service

      本文介绍的是如何用Delphi6开发Web Service程序,并把服务程序放在IIS Web服务器上提供给各种客户程序调用。一编写服务程序第一步:File----->New----->O...
  • coala
  • coala
  • 2001-10-26 11:27:00
  • 726

Leetcode 85. Maximal Rectangle 最大矩形 解题报告

1 解题思想这道题我是转化成上一道题来做的,对于每一行,看成给一个直方图在每一行上,首先按照直方图的方式进行统计,然后记录并更新最大,因此计算请看: Leetcode 84. Largest Re...
  • MebiuW
  • MebiuW
  • 2016-06-02 23:39:45
  • 1065

LeetCode 85. Maximal Rectangle(最大矩形)

原题网址:https://leetcode.com/problems/maximal-rectangle/ Given a 2D binary matrix filled with 0's and 1...
  • jmspan
  • jmspan
  • 2016-05-23 00:34:22
  • 530

LeetCode 85 Maximal Rectangle (最大子矩形 单调栈)

LeetCode 85 Maximal Rectangle (最大子矩形 单调栈)
  • Tc_To_Top
  • Tc_To_Top
  • 2016-10-06 15:47:16
  • 1132

leetCode 85.Maximal Rectangle (最大矩阵) 解题思路和方法

Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing all ones and...
  • xygy8860
  • xygy8860
  • 2015-07-22 13:43:51
  • 1065

leetcode_question_85 Maximal Rectangle

Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing all ones an...
  • doc_sgl
  • doc_sgl
  • 2013-09-19 17:29:08
  • 14750

[C++]LeetCode: 133 Largest Rectangle in Histogram(最大矩形面积)

题目: Given n non-negative integers representing the histogram's bar height where the width of each b...
  • cinderella_niu
  • cinderella_niu
  • 2015-02-04 21:01:20
  • 1387

Leetcode编程练习二:求直方图中矩形最大面积

Leetcode编程练习二:求直方图中矩形最大面积
  • ether_crow
  • ether_crow
  • 2016-09-21 17:02:02
  • 588

[LeetCode] 01矩阵中最大矩形 Maximal Rectangle

在一个M * N的矩阵中,所有的元素只有0和1, 找出只包含1的最大矩形。 例如:图中是一个4 × 6的矩形,画出红色的是我们要找到的区域。 仔细观察发现:因为我们要找的是矩形,所以它一...
  • jiyanfeng1
  • jiyanfeng1
  • 2012-10-14 00:10:00
  • 10345

算法学习之动态规划(leetcode 85. Maximal Rectangle)

85. Maximal Rectangle
  • maxiaotiaoti
  • maxiaotiaoti
  • 2017-03-15 16:59:00
  • 1685
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 1万+
    积分: 965
    排名: 5万+
    博客专栏
    最新评论