class Solution {
public:
bool inArea(vector<vector<int>>& grid,int r,int c) {
return 0<=r&&r<grid.size()&&0<=c&&c<grid[0].size();
}
int maxDistance(vector<vector<int>>& grid) {
int N=grid.size();
queue<vector<int>> q;
for(int i=0;i<N;i++) {
for(int j=0;j<N;j++) {
if(grid[i][j]==1) q.push({i,j});
}
}
if(q.empty()||q.size()==N*N) return -1;
vector<vector<int>> moves={
{-1,0},{1,0},{0,-1},{0,1},
};
int distance=-1;
while(!q.empty()) {
distance++;
int n=q.size();
for(int i=0;i<n;i++) {
vector<int> node=q.front();
q.pop();
int r=node[0],c=node[1];
for(auto move:moves) {
int r2=r+move[0];
int c2=c+move[1];
if(inArea(grid,r2,c2)&&grid[r2][c2]==0) {
grid[r2][c2]=2;
q.push({r2,c2});
}
}
}
}
return distance;
}
};
Leetcode1162(力扣1162):地图分析
最新推荐文章于 2024-07-20 15:35:45 发布