LeetCode 筆記 - 85. Maximal Rectangle
解析在 0/1 矩陣中尋找最大全 1 矩形的面積。本文展示如何將二維問題轉化為多個一維的「直方圖最大矩形」問題,透過動態更新高度陣列並重複套用單調堆疊演算法,達成高效的空間與時間運算。
給定一個 由 0 和 1 組成的二維矩陣,請找出其中只包含 1 的最大矩形,並返回其面積。

解題思維
這題可以拆解成多次解決「Find the max rectangle area with heights」的問題,如果沒寫過可以先試試看:
LeetCode 筆記 - 84. Largest Rectangle in Histogram
具體來說,我們可以將每一行視為直方圖的底部,並計算每一列的高度(即連續 1 的數量)。然後,對於每一行,我們使用 單調堆疊 (Monotonic stack) 的方法來計算該行所能形成的最大矩形面積。
Time complexity 是 $O(n \times m)$,因為我們需要對每一行都計算一次最大矩形面積,而每次計算的時間複雜度是 $O(m)$。
Space complexity 是 $O(m)$,因為我們需要一個高度陣列來存每一列的高度。
程式碼
1 | class Solution: |