84. 柱状图中最大的矩形
题解
思路1:暴力法,穷举
- 思路,穷举所有i和j在里面取最小值,并求出最小面积并每次进行更新max值,直到所有可能性都被列举完,返回最大值。
- 注意点:需要注意的地方,在双重嵌套遍历的地方,不能使用如下代码,如果使用了j = i +1则默认跳过了当宽度为1的柱子,直接求宽度为2的柱子。
for (let i = 0; i < heights.length - 1; i++) {
// 对min进行初始化
let min = heights[i]
for (let j = i +1; j < heights.length; j++) {
min = Math.min(min, heights[j])
// width 注意width具体的值需要+1
minArea = min * (j + 1 - i)
// 注意每个minArea计算出来后都要及时更新max
max = Math.max(minArea, max)
}
}
- 分析时间复杂度O(n^2) 空间复杂度 O(1)
- 代码实现
var largestRectangleArea = function (