原题链接:https://leetcode-cn.com/problems/largest-rectangle-in-histogram/
解题思路:
- 利用双循环,枚举所有可能的宽度。
- 查找在当前宽度下的最小高度。
- 计算所有宽高下的面积,在其中查找最大值。
/**
* @param {number[]} heights
* @return {number}
*/
var largestRectangleArea = function (heights) {
let area = 0;
for (let i = 0; i < heights.length; i++) {
// 记录当前枚举到的高度
let minHeight = heights[i];
for (let j = i; j < heights.length; j++) {
// 不断向后枚举,寻找当前宽度下的最小高度
minHeight = Math.min(minHeight, heights[j]);
// 计算当前宽度和最小高度对应的面积
area = Math.max(minHeight * (j - i + 1), area);
}
}
return area;
};