剑指 Offer II 107. 矩阵中的距离

147 阅读1分钟

剑指 Offer II 107. 矩阵中的距离

给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。

两个相邻元素间的距离为 1 。

image.png

输入: 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;
};