描述
给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。
两个相邻元素间的距离为 1 。
DFS
复杂度接近O(m2n2)
class Solution {public:int dir[5] = {-1, 0, 1, 0, -1};vector<vector<int>> updateMatrix(vector<vector<int>>& mat) {int n = mat.size();int m = mat[0].size();vector<vector<int>> res(n, vector<int>(m, INT_MAX));for (int i = 0; i < n; ++i){for (int j = 0; j < m; ++j){if (mat[i][j] == 0){dfs(mat, res, i, j, 0);}}}return res;}void dfs(vector<vector<int>>& mat, vector<vector<int>>& res, int i, int j, int dist){int n = mat.size();int m = mat[0].size();if (i >= n || i < 0) return;if (j >= m || j < 0) return;if (mat[i][j] == 0 && dist > 0) return;if (res[i][j] <= dist) return;res[i][j] = dist;for (int k = 0; k < 4; ++k){dfs(mat, res, i+dir[k], j+dir[k+1], dist+1);}}};
