Python程序:查找直方图中最大矩形面积
假设我们有一列数字,表示直方图中条形的高度。我们需要找到可以在条形下形成的最大矩形的面积。
因此,如果输入类似于 nums = [3, 2, 5, 7]
则输出将为 10
为了解决这个问题,我们将遵循以下步骤:
- stk := 一个栈,最初插入 -1 到其中
- 在heights的末尾插入0
- ans := 0
- 对于 i 从 0 到 heights 的大小,执行:
- 当 heights[i] < heights[栈顶] 时,执行:
- h := heights[栈顶] 并从栈中弹出
- w := i - 栈顶 - 1
- ans := ans 和 (h * w) 的最大值
- 将 i 推入栈中
- 当 heights[i] < heights[栈顶] 时,执行:
- 返回 ans
让我们看看下面的实现以更好地理解:
示例
class Solution: def solve(self, heights): stk = [-1] heights.append(0) ans = 0 for i in range(len(heights)): while heights[i] < heights[stk[-1]]: h = heights[stk.pop()] w = i - stk[-1] - 1 ans = max(ans, h * w) stk.append(i) return ans ob = Solution() nums = [3, 2, 5, 7] print(ob.solve(nums))
输入
[3, 2, 5, 7]
输出
10
广告