作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4052721.html

题目链接:leetcode Maximal Rectangle 单调栈

该题目是  leetcode Largest Rectangle in Histogram 的二维版本,首先进行预处理,把一个n×m的矩阵化为n个直方图,然后在每个直方图中计算使用单调栈的方法计算面积最大的矩形,然后求得最大的矩形面积即可。

Ps:这题直接在网页里面敲完居然1A,不错。

代码如下:

 class Solution {
public:
int mr(vector<int> arr)
{
arr.push_back();
stack<pair<int, int> > st;//height index
int res = ;
for( int i = ; i < arr.size() ; i++ )
{
pair<int, int> tmp;
if( st.size() == || st.top().first <= arr[i] )
{
st.push(make_pair(arr[i], i));
}
else
{
while( st.size() > && st.top().first > arr[i] )
{
tmp = st.top();
st.pop();
res = max(res, tmp.first*(i-tmp.second));
}
st.push(make_pair(arr[i], tmp.second));
}
}
return res;
}
int maximalRectangle(vector<vector<char> > &matrix)
{
int res = ;
if( matrix.size() == ) return ;
vector<vector<int> > ma(matrix.size(), vector<int>(matrix[].size(), ));
for( int i = ; i < matrix[].size(); i++ )
{
if( matrix[][i] == '' ) ma[][i] = ;
}
for( int i = ; i < matrix.size() ; i++ )
{
for( int j = ; j < matrix[].size() ; j++ )
{
if( matrix[i][j] == '' )
{
ma[i][j] = ma[i-][j] + ;
}
}
}
for( int i = ; i < ma.size() ; i++ )
{
res = max(res, mr(ma[i]));
}
return res;
}
};

最新文章

  1. linQ学习笔记之一
  2. FFmpeg官方文档之————先进音频编码(AAC)
  3. vm虚拟机启动失败 Global\vmx86
  4. Todd&#39;s Matlab讲义第1讲:向量,函数和作图
  5. ClassLoader, JavaAgent, Aspectj Weaving一站式扫盲帖
  6. Shell获取文件后缀名
  7. windows 2003 server 安装 .NET Framework 2.0环境
  8. 严重:IOException while loading persisted sessions:java.io.EOFException.
  9. Java代理模式汇总
  10. Android 禁止屏幕休眠和锁屏的方法
  11. Linux(ubuntu)下jdk&amp;tomcat的安装
  12. Hibernate与 MyBatis的比较(转)
  13. 【Ubuntu 16】启动Eclipse Indigo报错 error code1 jdk没有配置好
  14. [HAOI 2008]硬币购物
  15. vue入门练习(一)
  16. SQL 中常用存储过程xp_cmdshell运行cmd命令
  17. T-SQL 编程技巧
  18. 364. Nested List Weight Sum II 大小反向的括号加权求和
  19. JavaScript数据类型-2---Undefined、 Null、 Boolean、 Number、 String.
  20. 第二个Sprint

热门文章

  1. 简单的谈一下.NET下的AOP
  2. class ResultServletContextListener implements ServletContextListener
  3. 对PostgreSQL的prepared statement的深入理解
  4. 正则化方法 exec 和match以及test
  5. 详解 MySQL 中的 explain
  6. PAT 1006
  7. C#_mvc_ajax_return data
  8. Java_生产者消费者模式
  9. 父元素onmouseover触发事件在父子元素间移动不停触发的问题
  10. ubuntu 安装sublime并激活