leetcode Maximal Rectangle
来源:互联网 发布:c语言大小写转换循环 编辑:程序博客网 时间:2024/06/07 15:16
Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing only 1's and return its area.
For example, given the following matrix:
1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0
Return 6.
此题应该与前一道题“Largest Rectangle in Histogram”连起来看,这也是leetcode上两道题挨着的原因
看这个矩阵,是不是就像前一道题求最大矩阵面积。
代码如下,一看即懂:
class Solution {public: int maximalRectangle(vector<vector<char> >& matrix) { int row = matrix.size(); int col = matrix[0].size(); if(row == 0 || col == 0) return 0; vector<vector<int> >area(row, vector<int>(col, 0)); int i, j, max = 0, tmp; for(j=0; j<col; ++j) if(matrix[0][j] == '1') area[0][j] = 1; for(i=1; i<row; ++i) for(j=0; j<col; ++j) if(matrix[i][j] == '1') area[i][j] = area[i-1][j] + 1; for(i=0; i<row; ++i) { tmp = largestRectangleArea(area[i]); if(tmp > max) max = tmp; } return max; } int largestRectangleArea(vector<int> &height) {//<span style="color: rgb(51, 51, 51); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; line-height: 30px;">前一道题“</span><a target=_blank target="_blank" href="https://leetcode.com/problems/largest-rectangle-in-histogram/" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; color: rgb(0, 136, 204); text-decoration: none; line-height: 20px;">Largest Rectangle in Histogram</a><span style="color: rgb(51, 51, 51); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; line-height: 30px;">”的代码</span> if(height.empty()) return 0; height.push_back(0); stack<int> s; int len = height.size() ,tmp; int leftarea, rightarea, max = 0; for(int i=0; i<len; ++i) { while(!s.empty() && height[s.top()] > height[i]) { tmp = s.top(); s.pop(); if(s.empty()) leftarea = (tmp+1)*height[tmp]; else leftarea = (tmp-s.top())*height[tmp]; rightarea = (i-tmp-1)*height[tmp]; if(leftarea + rightarea > max) max = leftarea + rightarea; } s.push(i); } return max; }};
0 0
- 【LeetCode】Maximal Rectangle && Maximal Square
- Leetcode:Maximal Square & Maximal Rectangle
- LeetCode: Maximal Rectangle
- LeetCode Maximal Rectangle
- LeetCode: Maximal Rectangle
- [LeetCode] Maximal Rectangle
- [leetcode] Maximal Rectangle
- [LeetCode]Maximal Rectangle
- [leetcode]Maximal Rectangle
- LeetCode-Maximal Rectangle
- [leetcode] Maximal Rectangle
- Leetcode Maximal Rectangle
- [LeetCode] Maximal Rectangle
- leetcode Maximal Rectangle
- LeetCode Maximal Rectangle
- LeetCode | Maximal Rectangle
- [LeetCode] Maximal Rectangle
- [Leetcode] Maximal Rectangle (Java)
- orcacle 12c在win10下安装
- oracle 增加表空间大小的四种方法
- 【ITOO技术篇】——jQuery easyui 中datagrid时间无法正常显示
- lightoj 1071 Baker Vai (思维dp)
- wordpress的Error establishing a database connection问题
- leetcode Maximal Rectangle
- Android的布局(一)
- 【Educational Codeforces Round 16】Codeforces 710A King Moves
- Python常用模块介绍
- http协议请求
- 【大数据与云计算开发技术】Hadoop开发中遇到的常见错误总结
- zeppelin入门使用
- cocos2d-x,lua的Layer.onClick点击事件封装
- deep learning keras: 关于动物识别的vgg_16模型与调优