欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Largest Rectangle in Histogram

程序员文章站 2022-06-17 22:50:05
...

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.

Largest Rectangle in Histogram

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

Largest Rectangle in Histogram

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;
        
        
        
        
    }
};
终于写出来了,唉