1. 程式人生 > 其它 >Nodejs的安裝及配置

Nodejs的安裝及配置

題目連結:https://leetcode-cn.com/problems/largest-rectangle-in-histogram/submissions/
題目描述:

題解:


class Solution {
public:
    int largestRectangleArea(vector<int>& heights) {
        vector<int> minLeft(heights.size(), 0);
        vector<int> minRight(heights.size(), 0);
        //記錄每個節點左邊第一個小於當前節點的下標
        minLeft[0] = -1;
        for(int i = 1; i < heights.size(); i++)
        {
            int t = i -1;
            while(t >= 0 && heights[t] > heights[i])
            {
                t = minLeft[t];
            }
            minLeft[i] = t;
        }
        //記錄每個節點右邊第一個小於當前節點的下標
        minRight[heights.size() - 1] = heights.size();
        for(int i = heights.size() - 2; i >= 0; i--)
        {
            int t = i + 1;
            while(t < heights.size() && heights[t] >= heights[i])
            {
                t = minRight[t];
            }
            minRight[i] = t;
        }
        int result = 0;
        for(int i = 0; i < heights.size(); i++)
        {
            int sum = heights[i] * (minRight[i] - minLeft[i] - 1);
            result = max(sum, result);

        }
        return result;

    }
};