寻找直方图中的最大矩形 Largest Rectangle in Histogram
来源:互联网 发布:西安办公软件培训中心 编辑:程序博客网 时间:2024/06/13 23:25
题目: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.For example,Given height = [2,1,5,6,2,3]
,return 10
.
思路:矩形的高度瓶颈在于最小的高度。顺序扫描数组元素,同时在栈中维护一个递增的序列。当栈为空或是遇到比栈顶元素大的元素时,则认为瓶颈还未到来,只入栈而不计算;当遇到比栈顶元素小的元素时,则认为到达一个瓶颈,则对瓶颈左侧的矩形进行清算。
当扫描完毕后,再对栈中遗留下的元素进行清算。
该方法的时间复杂度O(N),空间复杂度O(N)。
class Solution {public:int max(int a, int b){if(a > b)return a;elsereturn b;}int largestRectangleArea(vector<int> &height) {stack<int> s; //注意栈中存的是下标int len = height.size();int maxs = 0;int k;for(int i=0; i<len; i++){if(s.empty() || height[s.top()] <= height[i])s.push(i);else{while(!s.empty() && height[s.top()] > height[i]){k = s.top();s.pop();if(s.empty()) //注意时刻防止栈为空maxs = max(maxs, i*height[k]);elsemaxs = max(maxs, (i-s.top()-1)*height[k]);}s.push(i);}}while(!s.empty()){k = s.top();s.pop();if(s.empty()) //注意时刻防止栈为空maxs = max(maxs, len*height[k]);elsemaxs = max(maxs, (len-s.top()-1)*height[k]);}return maxs;}};
0 0
- 寻找直方图中的最大矩形 Largest Rectangle in Histogram
- 直方图最大矩形问题(Largest Rectangle in Histogram)
- 直方图最大矩形问题(Largest Rectangle in Histogram)
- Largest Rectangle in Histogram 直方图中最大的矩形面积
- Largest Rectangle in Histogram 直方图中最大的矩形
- LeetCode 84. Largest Rectangle in Histogram(直方图最大矩形)
- [Leetcode] largest rectangle in histogram 直方图中最大的矩形
- LeetCode OJ 之 Largest Rectangle in Histogram (直方图中的最大矩形)
- Largest Rectangle in Histogram :直方图中的最大三角形
- Largest Rectangle in Histogram 一排矩形中的最大的面积
- [LeetCode]—Largest Rectangle in Histogram 求直方图最大填充矩形面积
- LeetCode | Largest Rectangle in Histogram(直方图围城的最大矩形面积)
- leetCode 84.Largest Rectangle in Histogram (最大矩形直方图) 解题思路和方法
- 84 Largest Rectangle in Histogram(直方图中最大的矩形)
- LeetCode: Largest Rectangle in Histogram(直方图最大面积)
- Largest Rectangle in Histogram (直方图中最大面积) 【leetcode】
- 【直方图的最大面积】Largest Rectangle in Histogram
- Largest Rectangle in Histogram 直方图的最大正方形
- java web项目打包.war格式
- 黑马程序员-----java 常用java类
- Android中的Handler
- HDU3900 状压BFS
- 网络编程之路---4
- 寻找直方图中的最大矩形 Largest Rectangle in Histogram
- 保护模式编程——保护的详尽意义:通过调用门转移特权级
- 矩阵快速幂 模板
- 【浏览器】window.innerWidth/innerHeight (CSS像素) Viewport+滚动条
- Windows学习笔记15——定时器
- Ubuntu用户目录文件名中文变成英文
- nyoj-770-放射密码
- Codeforces 392C Yet Another Number Sequence(矩阵快速幂)
- Linux下的时间函数与定时器