largest rectangle in histogram leetcode
Given n non-negative integers representing the histogram's bar height where the width of each bar is 1, find the area of largest rectangle in the histogram.

题目:Above is a histogram where width of each bar is 1, given height = [2,1,5,6,2,3].

The largest rectangle is shown in the shaded area, which has area = 10 unit.
For example,
Given height = [2,1,5,6,2,3],
return 10.
思路分析:暴力破解方法应该不需要多说,直接计算每一个元素所能构成的最大矩形面积,并与max比较并记录。
这道题,是看了网上的众多博客之后结合自己的理解来mark一下这个过程(最主要是一遍就解决了,时间复杂度O(n)):
用到了栈,栈顶元素,跟当前索引是关键:
入栈:如果栈为空或者栈顶元素(其在直方图中的对应高度)小于等于当前索引(对应高度),这样就使得,栈中的元素(对应高度)是非递减的。这样符合贪心算法的思想,因为若是当前索引(对应高度)大于栈顶元素(对应高度),则继续入栈,因为必然能得到更大的矩形面积,贪心!
出栈:当前索引(对应高度)<栈顶元素(对应高度),则栈顶元素出栈,并记录下其对应高度,并计算其能对应的最大矩形面积。注意一个关键点:栈顶元素跟当前索引之间的所有元素(对应高度)都大于等于这两个端点对应高度!
 class Solution {
 public:
     int largestRectangleArea(vector<int>& height) {
         stack<int> sta;
         height.push_back();
         int i = ,sum=;
         while (i < height.size())
         {
             if (sta.empty() ||height[sta.top()] <= height[i])
             {
                 sta.push(i++);
             }
             else
             {
                 int t = sta.top();
                 sta.pop();
                 sum = max(sum, height[t]*(sta.empty()?i:i - sta.top() - ));
             }
         }
         return sum;
     }
 };
largest rectangle in histogram leetcode的更多相关文章
- Largest Rectangle in Histogram leetcode java
		题目: Given n non-negative integers representing the histogram's bar height where the width of each ba ... 
- Java for LeetCode 084 Largest Rectangle in Histogram【HARD】
		For example, Given height = [2,1,5,6,2,3], return 10. 解题思路: 参考Problem H: Largest Rectangle in a Hist ... 
- leetcode Largest Rectangle in Histogram 单调栈
		作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4052343.html 题目链接 leetcode Largest Rectangle in ... 
- leetcode之Largest Rectangle in Histogram
		问题来源:Largest Rectangle in Histogram 问题描述:给定一个长度为n的直方图,我们可以在直方图高低不同的长方形之间画一个更大的长方形,求该长方形的最大面积.例如,给定下述 ... 
- LeetCode 84. Largest Rectangle in Histogram 单调栈应用
		LeetCode 84. Largest Rectangle in Histogram 单调栈应用 leetcode+ 循环数组,求右边第一个大的数字 求一个数组中右边第一个比他大的数(单调栈 Lee ... 
- [LeetCode] Largest Rectangle in Histogram O(n) 解法详析, Maximal Rectangle
		Largest Rectangle in Histogram Given n non-negative integers representing the histogram's bar height ... 
- LeetCode 84. 柱状图中最大的矩形(Largest Rectangle in Histogram)
		题目描述 给定 n 个非负整数,用来表示柱状图中各个柱子的高度.每个柱子彼此相邻,且宽度为 1 . 求在该柱状图中,能够勾勒出来的矩形的最大面积. 以上是柱状图的示例,其中每个柱子的宽度为 1,给定的 ... 
- 【LeetCode】84. Largest Rectangle in Histogram 柱状图中最大的矩形(Python)
		作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 单调栈 日期 题目地址: https://leetc ... 
- LeetCode 笔记系列 17 Largest Rectangle in Histogram
		题目: Largest Rectangle in Histogram Given n non-negative integers representing the histogram's bar he ... 
随机推荐
- PYTHON XPath与lxml类库
			XPath,我们可以用先将HTML文档转换成XML文档,然后用XPath查找HTML节点或元素. XML文档实例 HTML DOM模型示例 HTML DOM定义了访问和操作HTML文档的标准方法,以树 ... 
- 几题LCS后的小总结
			先得理解最长上升子序列吧,这还是非常简单的. 然后就是要真正理解LCS: 真正理解源于做题,做题就像查漏补缺一样,你总有不会的地方. 非常彻底地理解该图(还是去做题啦) = =瞎几把乱说有两种问题 [ ... 
- js的NaN变量
			js中,我们经常在parseInt函数的时候遇到NaN变量,这个变量到底是什么呢? w3c上这样解释: NaN 属性是代表非数字值的特殊值.该属性用于指示某个值不是数字.可以把 Number 对象设置 ... 
- Robotframework自动化系列:筛选结果数量统计
			Robotframework自动化系统:筛选结果数量统计 上一个节点已经可以随机选中某一个下拉框的值,我们在使用evaluate随机数的时候需要计算下拉选项总数,这时候我们是手工计算输入的:这时候如果 ... 
- OpenCv图像像素操作
			1:像素 有两种直接操作像素点的方法: 第一种: 将其转化为numpy.array格式,直接进行操作. 第二种:使用Opencv提供的Get1D,Get2D等函数. 2:获取行和列像素 有一下四个函数 ... 
- Nginx系列篇三:linux中Nginx+keepalived做一个高可用的主从配置
			建议:先阅读搭建Nginx负载均衡之后再看此篇 备注: Nginx+keepalived的高可用有两种方式 一.主从配置 二.双主热备配置[下一篇] 准备: 标配四台服务器 Master:192.16 ... 
- C++面向对象程序设计举例
			[例8.1]最简单的例子. #include <iostream> using namespace std; class Time //定义Time类 { public : //数据成员为 ... 
- Queue Sequence HDU - 4441
			码力不行啊... 错误记录: 171行后面对find2的使用错误,原来写的是p=find2(rt,p1),然后再加上一句能过样例但很假的特判 事实上,现在是要寻找最大的j,使得d2[1..j-1]=p ... 
- 记忆化搜索(DFS+DP) URAL 1501 Sense of Beauty
			题目传送门 /* 题意:给了两堆牌,每次从首部取出一张牌,按颜色分配到两个新堆,分配过程两新堆的总数差不大于1 记忆化搜索(DFS+DP):我们思考如果我们将连续的两个操作看成一个集体操作,那么这个操 ... 
- Vue项目搭建流程 以及 目录结构构建
			Vue项目搭建流程 以及 目录结构构建 一个小的Vue项目, 基于微信浏览器的移动端, 做了这么多的练习项目, 这一次准备记录下构建的过程, 以方便以后的调高效率 环境准备 操作系统 我的 windo ... 
