84. 柱状图中最大的矩形

2020-03-07  本文已影响0人  最尾一名

原题

https://leetcode-cn.com/problems/largest-rectangle-in-histogram/

解题思路

维护一个单调递增栈。

代码

/**
 * @param {number[]} heights
 * @return {number}
 */
var largestRectangleArea = function(heights) {
    let ans = 0, stack = [];
    heights.unshift(0);
    heights.push(0);
    for (let i = 0; i < heights.length; ++i) {
        while (stack.length && heights[stack[stack.length-1]] > heights[i]) {
            const currentHeight = stack.pop();
            const right = i, left = stack[stack.length-1] + 1;
            ans = Math.max(ans, (right-left)*heights[currentHeight]);
        }
        stack.push(i);
    }
    return ans;
};

复杂度

上一篇 下一篇

猜你喜欢

热点阅读