lintcode: Largest Rectangle in Histogram
来源:互联网 发布:ubuntu下硬盘安装win7 编辑:程序博客网 时间:2024/05/22 03:15
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.
方法一
O(n^2)
对于每个bar,找出bar是最矮的范围,求出一个面积;遍历所有bar,得到max面积。
超时
class Solution {public: /** * @param height: A list of integer * @return: The area of largest rectangle in the histogram */ int largestRectangleArea(vector<int> &height) { // write your code here int maxArea=0; for(int i=0;i<height.size();i++){ int left; if(i==0){ left=i; }else{ left=i-1; while(left>=0 && height[left]>=height[i]) left--; left++; } int right; if(i==height.size()-1){ right=i; }else{ right=i+1; while(right<=height.size()-1 && height[right]>=height[i]) right++; right--; } int area=(right-left+1)*height[i]; if(area>maxArea){ maxArea=area; } } return maxArea; }};
方法2
用递增栈
http://www.cnblogs.com/lichen782/p/leetcode_Largest_Rectangle_in_Histogram.html
class Solution {public: /** * @param height: A list of integer * @return: The area of largest rectangle in the histogram */ int largestRectangleArea(vector<int> &height) { // write your code here stack<int> stk; int maxArea=0; int i=0; vector<int> h(height); //后面加个0 h.push_back(0); while(i<h.size()){ if(stk.empty() || h[i]>=h[stk.top()]){ stk.push(i); i++; }else{ int t=stk.top(); stk.pop(); int area=h[t]*(stk.empty()?i:(i-stk.top()-1)); if(area>maxArea){ maxArea=area; } } } return maxArea; }};
0 0
- lintcode: Largest Rectangle in Histogram
- Largest Rectangle in Histogram
- Largest Rectangle in Histogram
- Largest Rectangle in Histogram
- Largest Rectangle in Histogram
- Largest Rectangle in Histogram
- Largest Rectangle in Histogram
- Largest Rectangle in Histogram
- Largest Rectangle in Histogram
- Largest Rectangle in Histogram
- Largest Rectangle in Histogram
- Largest Rectangle in Histogram
- Largest Rectangle in Histogram
- Largest Rectangle in Histogram
- Largest Rectangle in Histogram
- Largest Rectangle in Histogram
- Largest Rectangle in Histogram
- Largest Rectangle in Histogram
- 英国央行副行长:数字货币或对银行…
- 数字资产控股将华尔街女王Sallie&n…
- C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区
- 上海证券交易所白硕:浅谈区块链技…
- select poll epoll
- lintcode: Largest Rectangle in Histogram
- 关于树莓派用vnc与电脑实现远程桌面
- Visa在寻找区块链应用开发人员
- 高速区块链技术将运用在钻石行业账…
- 区块链产业2016年预计将筹集到100…
- 40家银行开始用比特币交易债券
- 外媒:欧洲议会活动讨论对区块链进…
- 暗网风波又起?欧洲当局强制关闭了…
- Gavin:我无法支持中心规划类的比…