01 矩阵
class Solution {
public:
vector<vector<int>> updateMatrix(vector<vector<int>>& matrix) {
int col = matrix.size();
int row = matrix[0].size();
deque<pair<int, int>> deq;
vector<vector<int>> result(col, vector<int>(row, 0));
vector<vector<int>> visit(col, vector<int>(row, 0));
for (int i = 0; i<col; ++i)
{
for (int j = 0; j<row; ++j)
{
if (matrix[i][j] == 0)
{
matrix[i][j] = 0;
visit[i][j] = 1;
deq.push_back(pair<int,int>(i,j));
}
}
}
int dx[] = { 0,0,-1,1 };
int dy[] = { 1,-1,0,0 };
int count = -1;
while (!deq.empty())
{
auto temp = deq.front();
deq.pop_front();
int ni = temp.first;
int nj = temp.second;
for (int k = 0; k < 4; ++k)
{
int ri = ni + dx[k];
int rj = nj + dy[k];
if (ri < 0 || ri >= col || rj < 0 || rj >= row)
continue;
if (visit[ri][rj] == 0)
{
visit[ri][rj] = 1;
matrix[ri][rj]=matrix[ni][nj]+1;
deq.push_back(pair<int, int>(ri, rj));
}
}
}
return matrix;
}
};