0221:最大正方形(★)
目录
题目
在一个由 '0'
和 '1'
组成的二维矩阵内,找到只包含 '1'
的最大正方形,并返回其面积。
示例 1:
输入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]] 输出:4
示例 2:
输入:matrix = [["0","1"],["1","0"]] 输出:1
示例 3:
输入:matrix = [["0"]] 输出:0
提示:
m == matrix.length
n == matrix[i].length
1 <= m, n <= 300
matrix[i][j]
为'0'
或'1'
相似问题:
- 0085:最大矩形
- 0764:最大加号标志(1753 分)
- 2201:统计可以提取的工件(1525 分)
- 2132:用邮票贴满网格图(2364 分)
- 2943:最大化网格图中正方形空洞的面积(1677 分)
分析
#1
本题是 0085 的子问题,修改一下即可。
|
|
194 ms
#2
还可以直接用 dp:
- 令 dp[i][j] 代表以 (i,j) 为右下顶点的最大正方形的边长,当 matrix[i][j] == ‘1’ 时:
$$dp[i][j] = 1 + min(dp[i-1][j-1], dp[i-1][j], dp[i][j-1])$$
- 用反证法可以证明
- 可以用滚动数组优化空间
解答
|
|
113 ms