84. Largest Rectangle in Histogram

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.

84. Largest Rectangle in Histogram_第1张图片

Above is a histogram where width of each bar is 1, given height =[2,1,5,6,2,3].

84. Largest Rectangle in Histogram_第2张图片

The largest rectangle is shown in the shaded area, which has area =10
unit.
The largest rectangle is shown in the shaded area, which has area =10
unit.
For example,Given heights =[2,1,5,6,2,3],return10.

class Solution {
public:
    int largestRectangleArea(vector& heights) {
        stack s;
        heights.push_back(0);
        int result = 0;
        for(int i=0;iheights[s.top()])
                s.push(i++);
            else
              {
                  int temp = s.top();
                  s.pop();
                  result = max(result,heights[temp]*(s.empty() ? i:i-s.top()-1));
              }
        }
        return result;
    }
};

你可能感兴趣的:(84. Largest Rectangle in Histogram)