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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP