class Solution {
public:
bool isvalid(int x,int y,int m,int n){
return x>=0&&x<m&&y>=0&&y<n;
}
int numIslands(vector<vector<char>>& grid) {
if(grid.size()==0) return 0;
int dx[]={-1,0,1,0};
int dy[]={0,1,0,-1};
int m=grid.size(),n=grid[0].size();
int islands=0;
auto visit=vector<vector<int>>(m,vector<int>(n,0));
queue<pair<int,int>> q;
for(int i=0;i<m;++i){
for(int j=0;j<n;++j){
if(grid[i][j]=='1'&&!visit[i][j]){
q.push(make_pair(i,j));
visit[i][j]=1;
while(!q.empty()){
auto p=q.front();
q.pop();
for(int k=0;k<4;++k){
int x=p.first+dx[k],y=p.second+dy[k];
if(isvalid(x,y,m,n)&&grid[x][y]=='1'&&!visit[x][y]){
visit[x][y]=1;
q.push(make_pair(x,y));
}
}
}
++islands;
}
}
}
return islands;
}
};
200. 岛屿的个数
最新推荐文章于 2021-03-16 21:17:16 发布