leetcode 85 最大矩形

2022-05-30 14:30:17 字數 965 閱讀 7990

題目描述:

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

注:用leetode-84題的思路,每一行都做一次最大矩形,挺有趣

import numpy as np

class solution:

def maximalrectangle(self, matrix: list[list[str]]) -> int:

if not matrix:

return 0

row,col = len(matrix),len(matrix[0])

height = [0] * col

res = 0

for r in matrix:

for i in range(col):

if r[i] == '0':

height[i] = 0

else:

height[i] += 1

res = max(res, self.findlarge(height))

return res

def findlarge(self,heights):

stack = list()

res = 0

n = len(heights)

for i in range(n):

if not stack or heights[i]>heights[stack[-1]]:

else:

while stack and heights[i] <= heights[stack[-1]]:

h = heights[stack.pop()]

w = i if not stack else i - stack[-1] - 1

res = max(res,h*w)

return res

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