答案思路全在下面这张图上,你看看
- 先遍历
- 当遇到红色的时候,这时候开始计算面积,取最优值
- 最后的面积为了考虑到,给不上一个长度为0的矩形
var largestRectangleArea = function (arr) {
arr = arr.concat(0);
var brr = [-1];
var res = 0;
var f = (brr) => brr[brr.length - 1];
for (var i = 0; i < arr.length; i++) {
while (f(brr) != -1 && arr[f(brr)] >= arr[i]) {
var h = arr[brr.pop()];
var w = i - f(brr) - 1;
res = Math.max(res, h * w);
}
brr.push(i);
}
return res;
};
console.log(largestRectangleArea([2, 1, 5, 6, 2, 3]));