套路

2020-12-13  本文已影响0人  陶者001

// ===============================================================

// 1、单调栈的套路

// 主要解决一维排序的问题

int largestRectangleArea(vector<int> &height)

{

    int ret = 0;

    height.push_back(0);

    vector<int> index;

    for (int i = 0; i < height.size(); i++) {                            // 关键点

        while (index.size() > 0 && height[index.back()] >= height[i]) {  // 关键点

            int h = height[index.back()];

            index.pop_back();

            int sidx = index.size() > 0 ? index.back() : -1;

            ret = max(ret, h * (i - sidx - 1));

        }

        index.push_back(i);

    }

    return ret;

}

上一篇下一篇

猜你喜欢

热点阅读