0
点赞
收藏
分享

微信扫一扫

221. 最大正方形

在一个由 '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'


/**
 * @author [头号玩儿家(QtumOne)](https://qtum.one) <QtumOne@gmail.com>
 * @param {character[][]} matrix
 * @return {number}
 */
// dp[i, j] = min(dp[i - 1, j], dp[i, j - 1], dp[i - 1, j - 1]) + 1;
var maximalSquare = function(matrix) {
    const m = matrix.length, n = matrix[0].length;
    let ans = 0;
    for (let i = 0; i < m; i++) {
        for (let j = 0; j < n; j++) {
            if (+matrix[i][j]) {
                matrix[i][j] = (Math.min(matrix[i - 1]?.[j], matrix[i][j - 1], matrix[i - 1]?.[j - 1]) || 0) + 1;
                ans = Math.max(ans, matrix[i][j]);
            }
        }
    }
    return ans * ans;
};

举报

相关推荐

0 条评论