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.
Example:
Input: [2,1,5,6,2,3] Output: 10
Solution in C++:class Solution {public:int largestRectangleArea(vector<int>& heights) {int n = heights.size();if (!n) return 0;heights.push_back(0);stack<int>stk;int res = 0;for (int i = 0; i < heights.size(); i++) {//cout<<heights[stk.top()]<<" - "<<heights[i]<<endl;while (!stk.empty() && heights[stk.top()] > heights[i]) {int h = heights[stk.top()];stk.pop();int l = stk.empty() ? 0 : stk.top()+1;res = max(res, (i-l)*h);}stk.push(i);}return res;}};
Comments
Post a Comment