221. Maximal Square

2021-10-15  本文已影响0人  jluemmmm

在一个由 '0' 和 '1' 组成的二维矩阵内,找到只包含 '1' 的最大正方形,并返回其面积。
fill每次是创建一个对象,指的是同一内存地址的对象,是浅拷贝,所以会同时变更数据。

动态规划

/**
 * @param {character[][]} matrix
 * @return {number}
 */
var maximalSquare = function(matrix) {
  let res = 0;
  if (!matrix || !matrix.length || !matrix[0].length) {
    return res;
  }
  const row = matrix.length;
  const col = matrix[0].length;
  const dp = Array(row).fill().map(i => Array(col).fill(0));
  for (let i = 0; i < row; i++) {
    for (let j = 0; j < col; j++) {
      if (matrix[i][j] === '1') {
        if (i === 0 || j === 0) {
          dp[i][j] = 1
        } else {
          dp[i][j] = Math.min(dp[i - 1][j - 1], Math.min(dp[i][j - 1], dp[i - 1][j])) + 1;
        }
        res = Math.max(dp[i][j], res);
      }
    }
  }
  return res * res;
};
上一篇 下一篇

猜你喜欢

热点阅读