【力扣】100.岛屿数量
AC截图
题目
思路
可以用一个和grid数组大小相同的visit数组记录陆地是否被访问过。
遍历grid数组,对于每一个没有被访问过的陆地,调用依次dfs,再将cnt++即可。
代码
class Solution {
public:
void dfs(vector<vector<char>>& grid,vector<vector<bool>>& visit,int i,int j){
//处理边界
if(i<0 || j<0 || i>=grid.size() || j>=grid[0].size() || grid[i][j]=='0' || visit[i][j]){
return ;
}
visit[i][j]=true;
dfs(grid,visit,i+1,j);
dfs(grid,visit,i,j+1);
dfs(grid,visit,i-1,j);
dfs(grid,visit,i,j-1);
}
int numIslands(vector<vector<char>>& grid) {
vector<vector<bool>> visit(grid.size(),vector<bool>(grid[0].size(),false));
int cnt = 0;
for(int i=0;i<grid.size();i++){
for(int j=0;j<grid[0].size();j++){
if(grid[i][j]=='1' && !visit[i][j]){
dfs(grid,visit,i,j);
cnt++;
}
}
}
return cnt;
}
};