题目:85. Maximal Rectangle
链接:https://leetcode.com/problems/maximal-rectangle/description/
大概意思是二维数组中有1和0,找到由1组成的矩形的最大面积。
这个可以使用上一个单调栈题目(84. Largest Rectangle in Histogram)的思路,计算出第0行到每一行中间的最大矩形面积就可以了,需要先算出每一列的条条的高度,剩下的和84题一样的。
python:
class Solution(object):
def maximalRectangle(self, matrix):
"""
:type matrix: List[List[str]]
:rtype: int
"""
if not matrix:
return 0
if not matrix[0]:
return 0
cols=len(matrix[0])
res=0
height=[0 for i in range(cols+1)]
for row in matrix:
for i in range(cols):
height[i]=height[i]+1 if row[i]=="1" else 0
stack=[-1]
for i in range(cols+1):
while height[i]<height[stack[-1]]:
h=height[stack.pop()]
w= i-stack[-1]-1
res=max(res,h*w)
# print(res)
stack.append(i)
return res