利用dfs遍历岛屿以及邻近的区域,把所有遍历过的岛屿变为0,防止再次遍历。
class Solution {
public:
int numIslands(vector<vector<char>>& grid) {
int res=0;
for(int i=0;i<grid.size();i++){
for(int j=0;j<grid[0].size();j++){
if(grid[i][j]=='1'){
res++;
dfs(grid,i,j);
}
}
}
return res;
}
void dfs(vector<vector<char>>& grid,int i,int j){
if(i>=0&&i<grid.size()&&j>=0&&j<grid[0].size()&&grid[i][j]=='1'){
grid[i][j]='0';
dfs(grid,i+1,j);
dfs(grid,i-1,j);
dfs(grid,i,j+1);
dfs(grid,i,j-1);
}
}
};