给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。

示例:

输入:
[
[“1”,“0”,“1”,“0”,“0”],
[“1”,“0”,“1”,“1”,“1”],
[“1”,“1”,“1”,“1”,“1”],
[“1”,“0”,“0”,“1”,“0”]
]
输出: 6

第一次的 代码:
我们首先遍历每一行,首先建立一个列表h,以第一行为底,用来保存在新遍历每一行之后,可行的高度,这个高度不是简单的累加,而是当遇到不是断层时,变为0。从第一行开始,每行都要计算最大面积,直到遍历到最后一行。计算最大面积的方法,和上一题一样。

Leetcode做题日记:85. 最大矩形(PYTHON)h表示遍历到当前行的可行高度,每一行都要计算最大面积,而当遇到0时,可行高度肯定就不能保持原数了,应归零,继续用可行高度计算最大面积

	if not matrix :
            return 0
        n=len(matrix)
        m=len(matrix[0])
        h=[0]*m
        ms=0
        for i in range(n):
            temp=[]
            for j in range(m+1):#设置m+1是为了不漏计算,像上一题我们是+[0],一样的效果
                if j<m:
                    h[j]=(h[j]+1)if matrix[i][j]=='1' else 0 #若遇到0,则高度为0,看图解
                while temp and (j==m or h[temp[-1]]>h[j]): #当出现不增墙
                    height=h[temp.pop()]
                    ms=max(ms,height*(j-1-(temp[-1] if temp else -1)))
                temp.append(j) #将新不增墙加入递增栈temp    
        return ms

116ms,排名75%

相关文章:

  • 2022-12-23
  • 2022-02-20
  • 2022-12-23
  • 2021-04-11
  • 2021-08-22
  • 2021-07-13
  • 2021-11-05
  • 2021-07-16
猜你喜欢
  • 2021-05-18
  • 2021-07-03
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-26
  • 2022-01-28
相关资源
相似解决方案