leetcode85 最大矩形(hard)

2021-09-27 06:47:23 字數 911 閱讀 8701

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

示例:輸入:

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

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

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

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

]輸出: 6

這題還是比較有技巧性的,可以將它轉換成,leetcode 84直方圖最大矩形(對於每一行將其作為以該行為底的乙個直方圖

這裡計算最大矩形可以用單調棧:

在高度陣列(不是棧)最後面加上乙個0,這樣原先的最後乙個板子也可以被處理

0肯定比任何的heights都小,所以0放在heights最後,一定會計算最後一塊板到前面板子的面積

棧記憶體放下標,維護棧內是遞增的高度

class solution 

}for(int i = 1;i < m;i++)}}

for(int i = 0;i < m;i++)

return max_num;

}int process(vector> &heights,int row)

else

}return max_num;

}};

遞增時,直接往後走

非遞增時,往前回溯,逐個計算矩形面積

class solution 

}for(int i = 1;i < m;i++)}}

for(int i = 0;i < m;i++)

return max_num;

}int process(vector> &heights,int row)

i++;

}return max_num;

}};

LeetCode 85 最大矩形

給定乙個僅包含 0 和 1 的二維二進位制矩陣,找出只包含 1 的最大矩形,並返回其面積。示例 輸入 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 輸出 6此題和上一題的擴充套件,此題給的二維矩陣的每一行向上都形成了乙個直方圖,所以二維矩陣有多少行,就有多少個直方圖...

leetcode85 最大矩形

1.轉換成直方圖的做法 參考 利用leetcode84中的方法來做 首先要將給定的01矩陣轉換成84中的直方圖的樣子。每一行都對應乙個直方圖,且下一行直方圖是由上一行直方圖計算得到的。如果是0,則當前直方圖高為0,如果是1,則當前直方圖高度是上一層對應位置高度 1 1 0 1 0 0 1,0 1,0...

LeetCode 85 最大矩形

給定乙個僅包含 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題largest rectangle in histogram一樣,對每一列都求出每...