LeetCode之Maximal Rectangle
2015-07-21 22:14
330 查看
/*这道题是Largest Rectangle in Histogram的二维版本,因此可以将一维版本的解法 应用到这道题的解法中。*/ class Solution { public: int maximalRectangle(vector<vector<char>>& matrix) { if(matrix.empty()) return 0; vector<int> height(matrix[0].size()+1, 0); int res(0); stack<int> s; for(int i = 0; i < matrix.size(); ++i){ stack<int>().swap(s); for(int j = 0; j < matrix[0].size() + 1; ++j){ if(j < matrix[0].size()){ if(matrix[i][j] == '1') ++height[j]; else height[j] = 0; } if(s.empty() || height[j] > height[s.top()]) s.push(j);//入栈 else{ while(!s.empty() && height[j] <= height[s.top()]){//出栈 int tmp = s.top(); s.pop(); res = max(res, height[tmp] * (s.empty() ? j : j - s.top() - 1)); } s.push(j); } } } return res; } };
相关文章推荐
- 阿里面试题目总结
- 多线程之线程锁的使用
- 痛并快乐着
- 协程 及 Libco 介绍
- JDBC连接MySql数据库
- Maven实战(坐标和依赖)
- 【树形dp】hdu 1011 Starship Troopers
- Linux僵尸进程的解决
- Github for Windows
- Opencv3.0.0 vs2012 win7配置
- Linux下安装opencv
- 2015第30周二
- Ubuntu系统安装配置Pintos和Bochs
- 13. JavaSE-多态 & 内部类
- 第62讲scala 隐式参数实例解析
- 广搜专题-1002
- 2015.7.21 第十课 课程重点(jq选择器:id、类、标签、奇偶、eq、nth-child、子元素、属性、包含、位置、过滤)
- elasticsearch参数详解
- [Spring MVC] - JSP + Freemarker视图解释器整合(转)
- C语言输入下标数,把下标值改成0并放到最后,再依次打印。