标签:算法 leetcode largest rectangle in
原题
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
.
解:
int largestArea(vector<int> &height) { stack<int> s; int res=0; int max=0; int topData; int i; for(i=0; i<height.size(); ) { if(s.empty() || height[i]>=height[s.top()])//使用保持栈中的数据递增,否则计算出矩阵的大小 { s.push(i++); } else { topData=s.top(); s.pop(); max=height[topData]*(s.empty()?i:i-s.top()-1);//只要s不为空,那么一定满足在(s.top,i)之间的数据都大于等于height[topData] if(max>res) res=max; } } while(!s.empty())//别忘了考虑最后i到头的情况 { topData=s.top(); s.pop(); max=height[topData]*(s.empty()? i : i-s.top()-1); if(max>res) res=max; } return res; }
leetcode——Largest Rectangle in Histogram
标签:算法 leetcode largest rectangle in
原文地址:http://blog.csdn.net/jisuanji_wjfioj/article/details/46492155