数学归纳法得出:
map(() => new Array(n).fill(Number.MAX_VALUE));建模brr[i][j] = 0;模型 复制 arr中的0brr[i][j] = Math.min(brr[i][j], brr[i - 1][j] + 1);从上到下brr[i][j] = Math.min(brr[i][j], brr[i][j - 1] + 1);从左到右brr[i][j] = Math.min(brr[i][j], brr[i + 1][j] + 1);从右往左brr[i][j] = Math.min(brr[i][j], brr[i][j + 1] + 1);从下往上
var updateMatrix = function (arr) {
var m = arr.length;
var n = arr[0].length;
var brr = new Array(m)
.fill(0)
.map(() => new Array(n).fill(Number.MAX_VALUE));
for (var i = 0; i < m; i++) {
for (var j = 0; j < n; j++) {
if (arr[i][j] == 0) {
brr[i][j] = 0;
}
}
}
for (var i = 0; i < m; i++) {
for (var j = 0; j < n; j++) {
if (i - 1 >= 0) {
brr[i][j] = Math.min(brr[i][j], brr[i - 1][j] + 1);
}
if (j - 1 >= 0) {
brr[i][j] = Math.min(brr[i][j], brr[i][j - 1] + 1);
}
}
}
for (var i = m - 1; i >= 0; i--) {
for (var j = n - 1; j >= 0; j--) {
if (i + 1 < m) {
brr[i][j] = Math.min(brr[i][j], brr[i + 1][j] + 1);
}
if (j + 1 < n) {
brr[i][j] = Math.min(brr[i][j], brr[i][j + 1] + 1);
}
}
}
return brr;
};