85. Maximal Rectangle

85. Maximal Rectangle

python 复制代码
class Solution:
    def maximalRectangle(self, matrix: List[List[str]]) -> int:
        def hist(heights):
            stack,ans=[],0
            for i,h in enumerate(heights+[0]):
                while stack and heights[stack[-1]]>=h:
                    H=heights[stack.pop()]
                    W=i if not stack else i-stack[-1]-1
                    ans=max(ans,H*W)
                stack.append(i)
            return ans

        if not matrix or not matrix[0]: return 0

        m,n,ans=len(matrix[0]),len(matrix),0
        row=[0]*m
        for i in range(n):
            for j in range(m):
                row[j]=0 if matrix[i][j]=='0' else row[j]+1
            ans=max(ans,hist(row))
        return ans

二维单调栈

递增栈

相关推荐
刃神太酷啦36 分钟前
排序--数据结构初阶(4)(C/C++)
c语言·数据结构·c++·算法·leetcode·深度优先·广度优先
凯子坚持 c1 小时前
深度解析算法之分治(归并)
算法·leetcode·职场和发展
PXM的算法星球7 小时前
【leetcode】3524 求出数组的X值1
算法·leetcode·职场和发展
椰羊~王小美9 小时前
LeetCode -- Flora -- edit 2025-04-27
算法·leetcode·职场和发展
mit6.82415 小时前
[Lc_week] 447 | 155 | Q1 | hash | pair {}调用
算法·leetcode·哈希算法·散列表
vim怎么退出18 小时前
43.验证二叉搜索树
前端·leetcode
编程绿豆侠19 小时前
力扣HOT100之链表:23. 合并 K 个升序链表
算法·leetcode·链表
OpenC++1 天前
【C++QT】Layout 布局管理控件详解
c++·经验分享·qt·leetcode
1白天的黑夜11 天前
贪心算法-860.柠檬水找零-力扣(LeetCode)
c++·算法·leetcode·贪心算法
Y1nhl1 天前
力扣hot100_子串_python版本
开发语言·python·算法·leetcode·职场和发展