zoukankan      html  css  js  c++  java
  • 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.

    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) {
            stack<int> s;
            int res = 0;
            heights.push_back(0);
            for(int i=0;i<heights.size();){
                if(s.empty() || heights[i] > heights[s.top()]){
                    s.push(i++);
                }else{
                    int tmp = s.top();
                    s.pop();
                    if(s.empty()){
                        res = max(res,heights[tmp]*i);
                    }else{
                        res = max(res,heights[tmp]*(i-s.top()-1));
                    }
                }
            }
            return res;
        }
    };
  • 相关阅读:
    生成器
    迭代器
    装饰器
    闭包函数
    函数对象
    函数
    文件
    字符编码
    基本的数据类型和内置方法02
    基本的数据类型和内置方法01
  • 原文地址:https://www.cnblogs.com/wxquare/p/5929822.html
Copyright © 2011-2022 走看看