题目链接

【题解】

把所有的"1"矩形分成m类。
第j类的矩形。他的右边界跟第j列紧靠。
那么。
我们设f[i][j]表示(i,j)这个点往左最长能延伸多少个数目的"1"
那么对于第j类的矩形。
我们会发现。问题转化为求一个侧着放的柱状图。
然后让你在其中找到最大面积的矩形。且要求紧贴着底面(也即第j列)
那么问题就抓换成[这道题](https://www.cnblogs.com/AWCXV/p/11934410.html)了。
做一个O(N)的单调队列就能解决。
所以总的复杂度就是O(N^2)的。

【代码】

class Solution {
public:
int maximalRectangle(vector<vector<char>>& matrix) {
if (matrix.empty()) return 0;
if (matrix[0].empty()) return 0;
int n = matrix.size();
int m = matrix[0].size();
int f[1005][1005];
memset(f,0,sizeof(f));
for (int i = 0;i < n;i++)
for (int j = 0;j < m;j++){
if (matrix[i][j]=='1'){
f[i+1][j+1] = f[i+1][j]+1;
}
}
int h[1005],sta[1005];
memset(h,0,sizeof(h));memset(sta,0,sizeof(sta));
int top;
int ma = 0;
for (int j = 1;j <= m;j++){
for (int i = 1;i <= n;i++){
h[i] = f[i][j];
}
top = 1;
sta[1] = 0;
for (int i = 1;i <= n;i++){
while (top!=1 && h[sta[top]]>h[i]){
ma = max(ma,h[sta[top]]*(i-1-sta[top-1]));
top--;
}
sta[++top] = i;
}
while (top>1){
ma = max(ma,h[sta[top]]*(n-sta[top-1]));
top--;
}
}
return ma;
}
};

【LeetCode 85】最大矩形的更多相关文章

  1. Java实现 LeetCode 85 最大矩形

    85. 最大矩形 给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积. 示例: 输入: [ ["1","0","1 ...

  2. leetcode 85. 最大矩形

    题目描述: 给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积. 思路分析: 这题是之前那道最大正方形的进阶,同样是利用dp来求解.通过逐行去计算最大矩形,即优化的 ...

  3. LeetCode 85 | 如何从矩阵当中找到数字围成的最大矩形的面积?

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode专题53篇文章,我们一起来看看LeetCode中的85题,Maximal Rectangle(最大面积矩形). 今天的 ...

  4. 求解最大矩形面积 — leetcode 85. Maximal Rectangle

    之前切了道求解最大正方形的题,题解猛戳 这里.这道题 Maximal Rectangle 题意与之类似,但是解法完全不一样. 先来看这道题 Largest Rectangle in Histogram ...

  5. [LeetCode] 85. Maximal Rectangle 最大矩形

    Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing only 1's and ...

  6. LeetCode (85): Maximal Rectangle [含84题分析]

    链接: https://leetcode.com/problems/maximal-rectangle/ [描述] Given a 2D binary matrix filled with '0's ...

  7. [LeetCode] Rectangle Area 矩形面积

    Find the total area covered by two rectilinear rectangles in a2D plane. Each rectangle is defined by ...

  8. [LeetCode] Rectangle Overlap 矩形重叠

    A rectangle is represented as a list [x1, y1, x2, y2], where (x1, y1) are the coordinates of its bot ...

  9. Leetcode 492. 构造矩形

    1.题目描述 作为一位web开发者, 懂得怎样去规划一个页面的尺寸是很重要的. 现给定一个具体的矩形页面面积,你的任务是设计一个长度为 L 和宽度为 W 且满足以下要求的矩形的页面.要求: 1. 你设 ...

随机推荐

  1. mysql-M-S-S模型 中继器 级联

    1.基础环境 三台虚机并且安装有mysql 并且同步好数据库 2.主服务器-创建账号并授权 mysql> create user 'mslave'@'X.X.X.X' identified by ...

  2. 16/7/11_PHP-文件系统

    读取文件内容 PHP具有丰富的文件操作函数,最简单的读取文件的函数为file_get_contents,可以将整个文件全部读取到一个字符串中. $content = file_get_contents ...

  3. CSS学习笔记1:字体样式属性

    CSS初识 成叠样式表,主要用于设置html页面的外观 产生原因:为了解决混乱的结构和样式,使结构和样式相分离. CSS注释 /*这是CSS注释*/ CSS样式规则 1.选择器用于指定css样式作用的 ...

  4. (转载)如何在 Github 上发现优秀的开源项目?

    转载自:传送门 之前发过一系列有关 GitHub 的文章,有同学问了,GitHub 我大概了解了,Git 也差不多会使用了,但是还是搞不清 GitHub 如何帮助我的工作,怎么提升我的工作效率? 问到 ...

  5. Rest接口单元测试

    Get请求url不超过4000字节 Rest成熟度:level 0:使用http作为传输方式,leve 1:引入资源概念,每个资源有对应的url,level 2:使用http方法进行不同操作,使用ht ...

  6. 前端webpack & vue

    地址 : https://blog.csdn.net/jiang7701037

  7. P3740 [HAOI2014]贴海报

    题目描述 Bytetown城市要进行市长竞选,所有的选民可以畅所欲言地对竞选市长的候选人发表言论.为了统一管理,城市委员会为选民准备了一个张贴海报的electoral墙. 张贴规则如下: electo ...

  8. centos7配置sudo免密

    1.chmod  +w   /etc/sudoers 2.vim  /etc/sudoers 在已经有了的root下面加 username  ALL=NOPASSWD:ALL      (这是所有的命 ...

  9. 关于javascript提交到java后台空格去不掉ASCII为160的解决办法

    今天正则表达式匹配一个字符串,怎么都不对. 用正则表达式去掉尝试str.replaceAll("\\s*","");  在或者用replaceAll(" ...

  10. 【LeetCode】BFS(共43题)

    [101]Symmetric Tree 判断一棵树是不是对称. 题解:直接递归判断了,感觉和bfs没有什么强联系,当然如果你一定要用queue改写的话,勉强也能算bfs. // 这个题目的重点是 比较 ...