0%

最大矩形

最大矩形

一维最大矩形

一维0/1最大矩形


0 1 1 0 1 1,高度为0或者1,求可以组成的最大面积


柱状图中最大的矩形

描述


leetcode题目

3 1 2 3 4 5 2 2 9 8 7
高度为h,求可以组成的最大面积

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。
求在该柱状图中,能够勾勒出来的矩形的最大面积。


分析


以h[i]为基准,左右延伸,可以求出以h[i]为高度的,最大面积
1.单调栈
单调非递减栈 当前元素i 当不小于栈顶元素时压入栈,当小于栈顶元素时,将栈顶元素出栈top
以h[top]高度为基准时的面积就等于 h[top] * (i - 当前栈的栈顶)
要考虑到栈为空的细节问题
2.动态规划
以i为右界,高位为h可以组成的最大面积
dp[i][h] = dp[i-1][h] + h (h<=h[i]) || 0


二维最大矩形

描述


leetcode题目

给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。


分析


是否可以降维,通过一维的思路进行解决
以h[i][j] 表示矩阵(i,j)的高度
然后每一行 i 就变成了一维问题

2.动态规划
dp[i][j][h] = dp[i][j-1][h] + h (h<=h[i][j]) || 0


三维最大矩形