LeetCode题解:84. 柱状图中最大的矩形,双循环暴力,JavaScript,详细注释

207 阅读1分钟

原题链接:leetcode-cn.com/problems/la…

解题思路:

  1. 利用双循环,枚举所有可能的宽度。
  2. 查找在当前宽度下的最小高度。
  3. 计算所有宽高下的面积,在其中查找最大值。
/**
 * @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;
};