题目描述:找出矩阵中最大的矩形面积为1个个数的总面积。
代码思路:相当于是把84题展开来了,高度成为了不连续的。
代码如下
class Solution:
def maximalRectangle(self, matrix):
"""
:type matrix: List[List[str]]
:rtype: int
"""
if not matrix:
return 0
m = len(matrix)
n = len(matrix[0])
h = [0 for _ in range(n)]
ans = 0
for i in range(m):
for j in range(n):
if matrix[i][j]=="1":
h[j] += 1
else:
h[j]=0
ans = max(self.getLargestHistorgram(h),ans)
return ans
def getLargestHistorgram(self,heights):
ans = 0
s = []
for i in range(len(heights)+1):
curr = -1 if i==len(heights) else heights[i]
while(s and heights[s[-1]] > curr):
h = heights[s.pop()]
w = i if not s else (i-s[-1]-1)
ans = max(ans,h*w)
s.append(i)
return ans