leetcode Maximal Rectangle 单调栈
2024-08-27 08:10:08
作者: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;
}
};
最新文章
- linQ学习笔记之一
- FFmpeg官方文档之————先进音频编码(AAC)
- vm虚拟机启动失败 Global\vmx86
- Todd&#39;s Matlab讲义第1讲:向量,函数和作图
- ClassLoader, JavaAgent, Aspectj Weaving一站式扫盲帖
- Shell获取文件后缀名
- windows 2003 server 安装 .NET Framework 2.0环境
- 严重:IOException while loading persisted sessions:java.io.EOFException.
- Java代理模式汇总
- Android 禁止屏幕休眠和锁屏的方法
- Linux(ubuntu)下jdk&;tomcat的安装
- Hibernate与 MyBatis的比较(转)
- 【Ubuntu 16】启动Eclipse Indigo报错 error code1 jdk没有配置好
- [HAOI 2008]硬币购物
- vue入门练习(一)
- SQL 中常用存储过程xp_cmdshell运行cmd命令
- T-SQL 编程技巧
- 364. Nested List Weight Sum II 大小反向的括号加权求和
- JavaScript数据类型-2---Undefined、 Null、 Boolean、 Number、 String.
- 第二个Sprint
热门文章
- 简单的谈一下.NET下的AOP
- class ResultServletContextListener implements ServletContextListener
- 对PostgreSQL的prepared statement的深入理解
- 正则化方法 exec 和match以及test
- 详解 MySQL 中的 explain
- PAT 1006
- C#_mvc_ajax_return data
- Java_生产者消费者模式
- 父元素onmouseover触发事件在父子元素间移动不停触发的问题
- ubuntu 安装sublime并激活