class Solution {
public:
vector<vector<int>> updateMatrix(vector<vector<int>>& matrix) {
queue<pair<int,int>> q;
int dirx[4]={1,-1,0,0};
int diry[4]={0,0,1,-1};
int row=matrix.size(),cal=matrix[0].size();
for(int i=0;i<row;i++){
for(int j=0;j<cal;j++){
if(matrix[i][j]==0)
q.push(pair<int,int>(i,j));
else
matrix[i][j]=INT_MAX;
}
}
while(!q.empty()){
pair<int,int> cur=q.front();
q.pop();
for(int i=0;i<4;i++){
int x=cur.first+dirx[i];
int y=cur.second+diry[i];
if(x<0||x>=row||y<0||y>=cal||matrix[x][y]<=matrix[cur.first][cur.second]+1)
continue;
q.push(pair<int,int>(x,y));
matrix[x][y]=matrix[cur.first][cur.second]+1;
}
}
return matrix;
}
};
542. 01 Matrix
最新推荐文章于 2022-06-19 21:49:39 发布