Untitled
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