У меня есть матрица элементами которой могут быть только 0 и 1. Нужно найти самую большую квадратную подматрицу которая состоит только из 1 и вернуть ее длину.
function findLargestSquare(mat) {
let max = 0;
let lookup = [];
for (var i = 0; i < mat.length; i++) {
lookup[i] = new Array(mat.length);
}
for (let i = 0; i < mat.length; i++) {
for (let j = 0; j < mat.length; j++) {
lookup[i][j] = mat[i][j];
if (i && j && mat[i][j])
lookup[i][j] = Math.min(Math.min(lookup[i][j - 1], lookup[i - 1][j]), lookup[i - 1][j - 1]) + 1;
if (max < lookup[i][j])
max = lookup[i][j];
}
}
return max;
}
console.log(findLargestSquare([
[0, 0, 1, 1, 0],
[1, 1, 1, 1, 0],
[1, 1, 1, 0, 0],
[1, 1, 1, 0, 0],
[1, 1, 1, 0, 0]
])); // 3
console.log(findLargestSquare([
[1, 0, 0],
[0, 1, 0],
[0, 0, 1]
])); // 1 но дoлжен возврощать 0
console.log(findLargestSquare([
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]
])); // 0
console.log(findLargestSquare([
[0, 0, 0, 0],
[0, 0, 0, 0],
[1, 1, 0, 0],
[1, 1, 0, 0]
])); // 2
Поможете найти ошибку?