本题与第84题非常接近,所以可以转化为84题求解
具体的:
把矩阵转化为第84题中的柱状图
转化方式见代码
再根据84题相同的方式求解即可
def maximalRectangle(self, matrix):
"""
:type matrix: List[List[str]]
:rtype: int
"""
row = len(matrix)
col = len(matrix[0])
stack = []
res = 0
for i in range(col):
matrix[0][i] = int(matrix[0][i])
for i in range(1, row):
for j in range(col):
matrix[i][j] = (int(matrix[i - 1][j]) + int(matrix[i][j])) if int(matrix[i][j]) > 0 else 0
for i in matrix:
i.insert(0,0)
i.append(0)
print(matrix)
for i in matrix:
for j in range(col+2):
while stack and i[j] < i[stack[-1]]:
cur_h = stack.pop()
res = max(res, (j - stack[-1] - 1) * i[cur_h])
stack.append(j)
return res