您的位置:首页 > 其它

[Leetcode] Largest Rectangle in Histogram

2013-03-10 03:36 495 查看
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
.

class Solution {
public:
int largestRectangleArea(vector<int> &height) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
stack<int> heightIndex;
stack<int> widthIndex;
int maxSum = 0;
int width;
int lastIndex;
int i = 0;

for(i = 0;i<height.size();i++)
{
lastIndex = i;
while(!heightIndex.empty() && height[i]<height[heightIndex.top()] )
{
width = i - widthIndex.top();
lastIndex = widthIndex.top();
maxSum = max(maxSum,width*height[heightIndex.top()]);
heightIndex.pop();
widthIndex.pop();
}
widthIndex.push(lastIndex);
heightIndex.push(i);
}

while(!heightIndex.empty())
{
width = i - widthIndex.top();
maxSum = max(maxSum,width*height[heightIndex.top()]);
heightIndex.pop();
widthIndex.pop();
}

return maxSum;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: