Maximal Square
MediumArrayDynamic ProgrammingMatrix
Solution
export function maximalSquare(matrix: string[][]): number {
const [m, n] = [matrix.length, matrix[0].length];
const dp = Array.from({ length: m + 1 }).map(() => new Array(n + 1).fill(0));
let answer = 0;
for (let row = 0; row < m; row++) {
for (let col = 0; col < n; col++) {
if (matrix[row][col] === '0') continue;
dp[row + 1][col + 1] = Math.min(dp[row][col], dp[row + 1][col], dp[row][col + 1]) + 1;
answer = Math.max(answer, dp[row + 1][col + 1] ** 2);
}
}
return answer;
}