Largest Rectangle in Histogram

来源:互联网 发布:手机淘宝如何延长收货 编辑:程序博客网 时间:2024/06/08 12:34

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 heights = [2,1,5,6,2,3],
return 10.

class Solution {public:    int largestRectangleArea(vector<int>& heights) {               if( heights.size() == 0)           return 0;                       heights.push_back(-1);        int max = 0;        int index = 0;        stack<int> s;        while(index < heights.size())        {            if(s.size() == 0 || heights[s.top()] <= heights[index])            {                s.push(index);                index++;            }            else            {                int top = s.top();                s.pop();                int size = 0;                if(s.size() == 0)                    size = heights[top]*index;                else                    size = heights[top]*(index - s.top() -1);                                                if(size > max)                    max = size;            }        }                return max;                                    }};
终于写出来了,唉
原创粉丝点击