題目:
思路:這一題的演算法本質上和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...