LeetCode 542 01 矩阵

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;
    }
};

在这里插入图片描述