class Solution {
public:
void dfs(vector<vector<char>>& grid, int i, int j){
int r = grid.size();
int c = grid[0].size();
grid[i][j] = '0';
if(i - 1 >= 0 && grid[i - 1][j] == '1'){
dfs(grid, i - 1, j);
}
if(i + 1 < r && grid[i + 1][j] == '1'){
dfs(grid, i + 1, j);
}
if(j - 1 >= 0 && grid[i][j - 1] == '1'){
dfs(grid, i, j - 1);
}
if(j + 1 < c && grid[i][j + 1] == '1'){
dfs(grid, i, j + 1);
}
}
int numIslands(vector<vector<char>>& grid) {
int res = 0;
int r = grid.size();
if(r == 0){
return res;
}
int c = grid[0].size();
for(int i = 0; i < r; ++i){
for(int j = 0; j < c; ++j){
if(grid[i][j] == '1'){
++res;
dfs(grid, i, j);
}
}
}
return res;
}
};
05-25
296
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
07-24
852
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
07-25
577
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
09-06