Untitled

 avatar
unknown
c_cpp
a year ago
1.1 kB
5
Indexable
class Solution {
public:

    bool isValid(int i, int j, int m, int n){
        if(i==m || j==n || i<0 || j<0)
            return false;
        return true;    
    }

    vector<vector<int>> updateMatrix(vector<vector<int>>& mat) {
        
        int m=mat.size();
        int n=mat[0].size();
        vector<vector<int>> res(m, vector<int>(n,-1));
        vector<vector<int>> dir{{0,1}, {0,-1}, {1,0}, {-1,0}};

        queue<pair<int,int>>q;
        for(int i=0; i<m; i++){
            for(int j=0; j<n; j++){
                if(mat[i][j] == 0){
                    q.push({i,j});
                    res[i][j]=0;
                }
            }
        }

        while(!q.empty()){
            auto cur = q.front();
           

            for(auto &z : dir){
                 int x=cur.first+z[0];
                 int y=cur.second+z[1];
                 if(isValid(x,y,m,n) && res[x][y]==-1){
                    q.push({x,y});
                    res[x][y]=res[cur.first][cur.second]+1;
                 }
            }
           
        }

        return res;
    }
};
Editor is loading...
Leave a Comment