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) {
            heights.push_back(0);
            stack<int> s;
            int res = 0;
            int i = 0;
            while(i < heights.size()){
                if(s.empty() || heights[i] > heights[s.top()]){
                    s.push(i);
                    i++;
                }else{
                    int cur = s.top();
                    s.pop();
                    if(s.empty()){
                        res = max(res,heights[cur]*i);
                    }else{
                        res = max(res,heights[cur]*(i-s.top()-1));
                    }
                }
            }
            return res;
            
        }
    };
  • 相关阅读:
    2017.4.18下午
    2017.4.18上午
    2017.4.17上午
    2017.4.14下午
    2017.4.14上午
    4.17下午
    4.17上午
    4.13下午
    4.13上午
    4.10上午
  • 原文地址:https://www.cnblogs.com/wxquare/p/6213307.html
Copyright © 2011-2022 走看看