85 最大矩形

2021-10-02 15:54:48 字數 931 閱讀 6928

題目:

思路:這一題的演算法本質上和84題largest rectangle in histogram一樣,對每一行都求出每個元素對應的高度,這個高度就是對應的連續1的長度,然後對每一行都更新一次最大矩形面積。那麼這個問題就變成了largest rectangle in histogram。本質上是對矩陣中的每行,均依次執行84題演算法。

**:

class solution:

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

if not matrix:

return 0

res=0

ro=len(matrix)

co=len(matrix[0])

nums=[0]*co

for i in range(ro):

for j in range(co):

if matrix[i][j]=="0":

nums[j]=0

else:

nums[j]=nums[j]+1

res=max(res,self.maxnums(nums))

return res

def maxnums(self,nums):

res=0

stack=

for i in range(len(nums)):

while stack and nums[stack[-1]]>nums[i]:

s=stack.pop()

res=max(res,nums[s]*((i-stack[-1]-1)if stack else i))

return res

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 方法 按層分割法 思路 按層生成從頭部開始,生成每一層的柱狀圖,然後求得改層的所能達到的最大面積,直到遍歷完...

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 使用柱狀圖 棧 defmaximalrectangle matrix if not matrix retur...

85 最大矩形

高度更新的過程 邊界的更新 這種方法和常規的動態規劃有差別,沒有常規的dp矩陣定義。但是在行向下變化的時候,也是利用之前的狀態。class solution object def update self,i,j,dp length dp i j 0 height dp i j 1 area 0 fo...