力扣https://leetcode-cn.com/problems/maximal-square/在一个由 '0'
和 '1'
组成的二维矩阵内,找到只包含 '1'
的最大正方形,并返回其面积。
// 可以使用动态规划降低时间复杂度。我们用dp(i,j) 表示以(i,j) 为右下角,
// 且只包含 1的正方形的边长最大值。
// 如果我们能计算出所有dp(i,j) 的值,
// 那么其中的最大值即为矩阵中只包含 1的正方形的边长最大值,其平方即为最大正方形的面积。
/**
* @param {character[][]} matrix
* @return {number}
*/
var maximalSquare = function(matrix) {
let m=matrix.length
if(m===0){
return 0
}
let n=matrix[0].length
const dp=[]
let maxLen=0
for(let i=0;i<m;i++){
dp[i]=new Array(n).fill(0)
for(let j=0;j<n;j++){
if(matrix[i][j]==="1"){
if(i===0 || j===0){
dp[i][j]= 1
}else{
dp[i][j]=Math.min(Math.min(dp[i-1][j-1],dp[i][j-1]),dp[i-1][j]) + 1
}
}
maxLen=Math.max(maxLen,dp[i][j])
}
}
return maxLen * maxLen
};