leetcode 85 最大矩形

2021-10-13 00:08:49 字數 1014 閱讀 7270

暴力解法

遍歷陣列,讓每個點作為陣列右下角元素時,然後求面積。

第一步,先求寬度為1時的長度len。計算此時的矩陣面積maxsize。

第二步,寬度加1,計算上一行的長度tlen。若tlen為0,則跳出。若非0,此時寬度為2的矩陣長度為min(len, tlen)。計算此時的矩陣面積maxsize = max(maxsize, min(len, tlen) * hei)

一直重複步驟二直至跳出迴圈

class

solution

else

break

; ty --;}

maxsize = len;

while

(tx >=0)

else

break

; ty --;}

if(tlen <= len)

else

if(tlen > len)

else

break

; tx --;}

return maxsize;

}int

maximalrectangle

(vectorchar

>>

& matrix)}}

return maxsize;}}

;

用陣列進行優化,陣列每個元素記錄了該點作為矩陣右下角元素的矩陣寬度。

class

solution

else

}else

int minwidth = width[x]

[y];

int hei =0;

for(

int tx = x; tx >=

0; tx --)}

}return maxsize;}}

;

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一樣,對每一列都求出每...