• 柱状图中最大的矩形


    给定 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
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

  • 相关阅读:
    P6007 [USACO20JAN]Springboards G
    CF1000F One Occurrence
    P6100 [USACO19FEB]Painting the Barn G
    P5838 [USACO19DEC]Milk Visits G
    P4085 [USACO17DEC]Haybale Feast
    P4267 [USACO18FEB]Taming the Herd
    P1712 [NOI2016]区间
    CF786B Legacy
    P5665 划分
    NOI2020网上同步赛 游记
  • 原文地址:https://www.cnblogs.com/panjingshuang/p/11900432.html
Copyright © 2020-2023  润新知