返回题库

最大正方形

Maximal Square

专题
Algorithmic Programming / 算法编程
难度
L3
来源
Citadel

题目详情

问题:最大正方形

考察:数组、动态规划

来源:Citadel

链接:https://www.jointaro.com/interviews/questions/maximal-square/

Given an m x n binary matrix filled with 0's and 1's, find the largest square containing only 1's and return its area.

 

Example 1:

Input: matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]]
Output: 4

Example 2:

Input: matrix = [["0","1"],["1","0"]]
Output: 1

Example 3:

Input: matrix = [["0"]]
Output: 0

 

Constraints:

  • m == matrix.length
  • n == matrix[i].length
  • 1 <= m, n <= 300
  • matrix[i][j] is '0' or '1'.
解析

思路:dp[i][j] 表示以该格为右下角的最大正方形边长。若当前为 1,则等于左、上、左上三个状态最小值加 1。

复杂度:时间 O(mn),空间 O(n) 可滚动优化。