标签:list 操作 targe color 示例 info bsp splay 数据
例如,给定一个序列 [ 1, 3, 5, 2, 4 ],当1,3,5入栈以后,当遇到新元素2时,由于栈顶元素5 > 2, 5被弹出, 新元素2是出栈元素5右边第一个比 5 小的元素,即新元素是出栈元素向后找第一个比其小的元素;此时新栈顶元素为3,3是5左边第一个比5小的数字,即新栈顶元素是出栈元素向前找第一个比其小的元素。
stack = [] for i in range(len(nums)): while stack and stack.top() > nums[i]: stack.pop() stack.push(nums[i])
给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。
以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。
图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。
代码:
""" 为了方便计算,将栈内存储的是元素的位置 """ class Solution: def largestRectangleArea(self, heights): height = [0] + heights + [0] lens = len(height) maxs = 0 for i in range(1, lens - 1): left = i right = i for j in range(i - 1, -1, -1): if height[j] < height[i]: left = j break for k in range(i + 1, lens): if height[k] < height[i]: right = k break maxs = max(maxs, height[i] * (right - left - 1)) return maxs
标签:list 操作 targe color 示例 info bsp splay 数据
原文地址:https://www.cnblogs.com/r1-12king/p/12994970.html