题目描述:找出矩阵中最大的矩形面积为1个个数的总面积。

题目链接:85. Maximal Rectangle

Leetcode 85. Maximal Rectangle
代码思路:相当于是把84题展开来了,高度成为了不连续的。
Leetcode 85. Maximal Rectangle

代码如下

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

参考链接

相关文章: