当前位置:   article > 正文

LeetCode刷题之路:84. 柱状图中最大的矩形_给第n个非负整数表示柱状图中柱的高度,现在希望你从柱状图中找出一个最大巨型

给第n个非负整数表示柱状图中柱的高度,现在希望你从柱状图中找出一个最大巨型

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。

求在该柱状图中,能够勾勒出来的矩形的最大面积。

示例 1:
在这里插入图片描述

输入:heights = [2,1,5,6,2,3]
输出:10
解释:最大的矩形为图中红色区域,面积为 10
示例 2:
在这里插入图片描述

输入: heights = [2,4]
输出: 4

#最直观的思路

利用单调栈
解题思路就是找到小于当前高度的左边第一个位置和右边第一个位置

依次遍历高度数组,若当前高度大于栈顶高度,则直接入栈
否则计算当前栈顶高度可以组成的最大面积

class Solution:
    def largestRectangleArea(self, heights: List[int]) -> int:
        val = []
        heights = [0] + heights + [0]
        res = 0
        for i in range(len(heights)):
            while val and heights[i] < heights[val[-1]]:
                res = max(res, (i- val[-2] - 1) * heights[val[-1]])
                val.pop()
            val.append(i)
        return res
        
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/360616
推荐阅读
相关标签
  

闽ICP备14008679号