这一题乍一看以为是回溯,但其实是二维dp.
var maximalSquare = function(matrix) {
const m=matrix.length;
if(m===0) return 0;
const n=matrix[0].length;
if(n===0) return 0;
var dp=new Array(m+1);
for(var i=0;i<=m;i++) dp[i]=new Array(n+1).fill(0);
var maxSide=0;
for(var i=1;i<=m;i++){
for(var j=1;j<=n;j++){
if(matrix[i-1][j-1]==="1") dp[i][j]=Math.min(dp[i][j-1],dp[i-1][j],dp[i-1][j-1])+1;
maxSide=Math.max(maxSide,dp[i][j]);
}
}
return maxSide*maxSide;
};