Skip to content

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

@chencl1986

Description

@chencl1986

原题链接:https://leetcode-cn.com/problems/largest-rectangle-in-histogram/

解题思路:

  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;
};

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions