HWA_02_leetcode84柱状图中的最大矩形

张开发
2026/4/9 7:35:40 15 分钟阅读

分享文章

HWA_02_leetcode84柱状图中的最大矩形
题目解题思路classSolution:deflargestRectangleArea(self,heights:List[int])-int:#初始化结果为0res0#使用单调栈stacklist()#将给定的原数组左右个添加一个0newHeights0*(len(heights)2)#左边界为0newHeights[0]0#右边界为0newHeights[len(newHeights)-1]0#其余不变foriinrange(1,len(newHeights)1):newHeights[i]heights[i-1]#整体思路#对于一个高度如果能得到向左向右的边界#那么就能对每个高度求一次面积#遍历所有高度就能求出最大面积#开始遍历foriineange(len(newHeights)):# 如果栈不为空且当前考察的元素值⼩于栈顶元素值# 则表示以栈顶元素值为⾼的矩形⾯积可以确定whilestackandnewHeights[i]newHeights[stack[-1]]:#弹出栈元素curstack[-1]stack.pop()#.pop() 是Python中列表list的方法用于移除并返回列表中的一个元素。#获取栈顶元素值对应的高curHeightnewHeights[cur]#栈顶元素弹出后新的栈顶元素就是其左侧边界leftIndexstack[-1]#右侧边界是当前考察的索引rightIndexi#计算矩形宽度curWidthrightIndex-leftIndex-1#计算面积resmax(res,curWidth*curHeight)#当前考察索引入栈stack.append(i)returnres#返回结果

更多文章