LeetCode 85 最大矩形 Python

2021-08-22 04:26:39 字數 1283 閱讀 7451

給定乙個僅包含 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題的解法進行求解最大值

python:

class solution:

def maximalrectangle(self, matrix):

""":type matrix: list[list[str]]

:rtype: int

"""n = len(matrix)

if n == 0:

return 0

m = len(matrix[0])

h = [0] * (m+1)

self.ans = 0

for i in range(n):

for j in range(m):

if matrix[i][j] == '1':

h[j] += 1

else:

h[j] = 0

self.ans = self.robot(self.ans,h)

return self.ans

def robot(self,maxl,h):

stk =

m = len(h) - 1

i = 0

while i <= m:

if len(stk) == 0 or h[stk[-1]] < h[i]:

i += 1

else:

now_idx = stk.pop()

if len(stk) == 0:

maxl = max(maxl,i * h[now_idx])

else:

maxl = max(maxl,(i - stk[-1] - 1) * h[now_idx])

return maxl

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