85 最大矩形(單調棧)

2021-10-24 12:54:15 字數 797 閱讀 1003

給定乙個僅包含 0 和 1 的二維二進位制矩陣,找出只包含 1 的最大矩形,並返回其面積。

輸入:

[ ["1","0","1","0","0"],

["1","0","1","1","1"],

["1","1","1","1","1"],

["1","0","0","1","0"]

]輸出: 6

這個題可以看成上一題 84. 柱狀圖中最大的矩形(單調棧) 的拓展,我們一行一行的來分析這個矩陣:

第一行:[1, 0, 1, 0, 0]

第一至二行:[2, 0, 2, 1, 1]

第一至三行:[3, 1, 3, 2, 2];、

第一至四行:[4, 0, 0, 3, 0]

顯然拆成每行來看的話,就是求第一行到第i行組成的柱狀圖中的最大矩形,那麼解法就很簡單了;

class

solution

stack.

push

(i);

}return ans;

}public

intmaximalrectangle

(char

matrix)

ans = math.

max(ans,

largestrectanglearea

(temp));

}return ans;

}}

最大矩形 單調棧

在這裡先簡單描述一下單調棧 單調棧 一種線性資料結構,棧內元素自棧頂到棧底滿足單調性。有單調遞增棧和單調遞減棧。如果要加入棧的元素不滿足單調性,則要將棧頂元素彈出,直到滿足條件為止,然後將該元素入棧 作用 給乙個直方圖,求直方圖中的最大矩形的面積。例如,下面這個中直方圖的高度從左到右分別是2,1,4...

最大矩形 單調棧

題目 給乙個直方圖,求直方圖中的最大矩形的面積。例如,下面這個中直方圖的高度從左到右分別是2,1,4,5,1,3,3,他們的寬都是1,其中最大的矩形是陰影部分。輸入包含多組資料。每組資料用乙個整數n來表示直方圖中小矩形的個數,你可以假定1 n 100000.然後接下來n個整數h1,hn,滿足 0 h...

貪心 單調棧 最大矩形

貪心 假設當前點為最大矩陣的右下角,向上擴充套件每次取長度的最小值作為矩陣的長。class solution int r matrix.size c matrix 0 size vectorint left r,vector int c,0 for int i 0 i r i int ret 0 f...