给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。
求在该柱状图中,能够勾勒出来的矩形的最大面积。
以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。
图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。
/**
* @param {number[]} heights
* @return {number}
*/
var largestRectangleArea = function(heights) {
// let max = 0;
// for(let j=heights.length-1;j>=0;j--){
// for(let i=0;i<=j;i++){
// let min = Math.min(...heights.slice(i,j+1));
// if(max
// max = (j-i+1)*min;
// }
// }
// }
// return max;
let max = 0;
for(let i=0;i
let left_i= i;
let right_i = i;
while(left_i>=0&&heights[left_i]>=heights[i]) left_i--;
left_i ++;
while(right_i=heights[i]) right_i++;
right_i++;
max = Math.max(max,(right_i-left_i-1)*heights[i]);
}
return max;
};
实现:主要是找到每个元素的最大面积值,最大面积值的求法:从当前位置开始从左找到一个比当前元素小的数据,从右找到一个比当前元素小的数据,然后将计算中间最大的面积值。
示例:
输入: [2,1,5,6,2,3]
输出: 10
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/largest-rectangle-in-histogram
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。