给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。
两个相邻元素间的距离为 1 。
输入: mat = [[0,0,0],[0,1,0],[1,1,1]]
输出: [[0,0,0],[0,1,0],[1,2,1]]
var updateMatrix = function (arr) {
var m = arr.length;
var n = arr[0].length;
var res = new Array(m).fill().map(() => new Array(n).fill(0));
for (var i = 0; i < m; i++) {
for (var j = 0; j < n; j++) {
if (arr[i][j]) {
res[i][j] =
Math.min(
res[i - 1] ? res[i - 1][j] : Infinity,
res[i][j - 1] === undefined ? Infinity : res[i][j - 1]
) + 1;
}
}
}
for (var i = m - 1; i >= 0; i--) {
for (var j = n - 1; j >= 0; j--) {
if (arr[i][j]) {
res[i][j] = Math.min(
Math.min(
res[i + 1] ? res[i + 1][j] : Infinity,
res[i][j + 1] === undefined ? Infinity : res[i][j + 1]
) + 1,
res[i][j]
);
}
}
}
return res;
};