题目描述:给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。
两个相邻元素间的距离为 1 。
class Solution { public: bool isExist(vector<vector<int>>& matrix, const int& j, const int& k, const int& i, const int& rows, const int& cols) { if (j - 1 >= 0) { if (matrix[j - 1][k] == i)return true; } if (j + 1 < rows) { if (matrix[j + 1][k] == i)return true; } if (k - 1 >= 0) if (matrix[j][k - 1] == i)return true; if (k + 1 < cols) if (matrix[j][k + 1] == i)return true; return false; } vector<vector<int>> updateMatrix(vector<vector<int>>& matrix) { unsigned int rows = matrix.size(); unsigned int cols = matrix[0].size(); int unsigned num = 0; for (int j = 0; j < rows; j++) { for (int k = 0; k < cols; k++) { if (matrix[j][k] == 0) num++; else matrix[j][k] = 10001; } } unsigned int i = 0; while (num != rows * cols) { for (int j = 0; j < rows; j++) { for (int k = 0; k < cols; k++) { if (matrix[j][k] > i){ if (isExist(matrix, j, k, i, rows, cols)) { matrix[j][k] = i + 1; num++; } } } } i++; } return matrix; } };
原文:https://www.cnblogs.com/airfy/p/12704178.html