柱状图中最大的矩形
给定 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<(j-i+1)*min){ // max = (j-i+1)*min; // } // } // } // return max; let max = 0; for(let i=0;i<heights.length;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.length&&heights[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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。