岛屿数量
岛屿数量又来了,大多数情况下,能用 BFS 解决的问题,也能被 DFS 解决。问题具体见。岛屿问题
代码如下(C++):
class Solution {
private:
void dfs(vector<vector<char>> & grid,int r,int c){ // 深度优先算法,感觉就是个递归
int nr = grid.size(); // 岛屿大小
int nc = grid[0].size();
grid[r][c] = '0'; // 将当前位置置0
if(r-1 >=0 && grid[r-1][c] == '1') dfs(grid,r-1,c); // 判断上下左右,如果有的话,继续递归
if(r+1 <nr && grid[r+1][c] == '1') dfs(grid,r+1,c);
if(c-1 >=0 && grid[r][c-1] == '1') dfs(grid,r,c-1);
if(c+1 <nc && grid[r][c+1] == '1') dfs(grid,r,c+1);
}
public:
int numIslands(vector<vector<char>>& grid) {
int nr = grid.size();
if(!nr) return 0;
int nc = grid[0].size();
int num_island = 0;
for(int r = 0; r < nr; ++r){
for(int c = 0; c < nc; ++c){
if(grid[r][c] == '1'){
++num_island; // 如果遇到 1 就 +1
dfs(grid,r,c); // 然后递归就完了
}
}
}
return num_island;
}
};
放在最后
如果您喜欢我的文章,拜托点赞+收藏+关注,博主会根据大家喜好来推出相关系列文章~
更多精彩内容也可以访问我的博客Aelous-BLog