leecode200.岛屿数量
目录
leecode200.岛屿数量
相当于求解图有几个连通分量
class Solution {
private:
void numIslands(vector<vector<char>>& grid,vector<vector<bool>>& visited,int x,int y){
if(x<0||y<0||x>=grid.size()||y>=grid[0].size())
return;
else if(grid[x][y]=='0'||visited[x][y])
return;
else{
visited[x][y]=true;
numIslands(grid,visited,x,y+1);
numIslands(grid,visited,x+1,y);
numIslands(grid,visited,x,y-1);
numIslands(grid,visited,x-1,y);
}
}
public:
int numIslands(vector<vector<char>>& grid) {
int result=0;
int m=grid.size(),n=grid[0].size();
vector<vector<bool>> visited(m,vector<bool>(n,false));
for(int i=0;i<m;i++)
for(int j=0;j<n;j++){
if(grid[i][j]=='1'&&!visited[i][j]){
result++;
numIslands(grid,visited,i,j);
}
}
return result;
}
};