Skip to content

Latest commit

 

History

History
79 lines (55 loc) · 1.74 KB

0221-maximal-square.adoc

File metadata and controls

79 lines (55 loc) · 1.74 KB

221. 最大正方形

在一个由 01 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。

示例 1:

{image_attr}
输入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]]
输出:4

示例 2:

{image_attr}
输入:matrix = [["0","1"],["1","0"]]
输出:1

示例 3:

输入:matrix = [["0"]]
输出:0

提示:

  • m == matrix.length

  • n == matrix[i].length

  • 1 <= m, n <= 300

  • matrix[i][j]01

思路分析

根据左上、左边、上边加自身,确定一个最小正方形;然后再进一步,在小正方形基础上,从四周选择已有正方形中最小,然后扩大,再这个过程中记录下最大的正方形边长,即可得到结果。思路如下图:

{image_attr}

简化一下,不需要矩阵来存储所有正方形的计算结果,只需要一行来记录上一行计算结果和当前行计算结果即可。

{image_attr}

无需另外开辟矩阵存储中间结果,直接在参数矩阵上存储即可。

{image_attr}
一刷
link:{sourcedir}/_0221_MaximalSquare.java[role=include]
二刷
link:{sourcedir}/_0221_MaximalSquare_2.java[role=include]