思路:dfs依次将岛屿设置为0,遍历到一个岛屿总数量就加1。
class Solution {
public:
vector<vector<int>> dir{{-1,0},{0,1},{0,-1},{1,0}};
void dfs(vector<vector<char>> &grid,int i,int j){
if(!(i>=0&&j>=0&&i<grid.size()&&j<grid[0].size())||grid[i][j]=='0') return ;
grid[i][j]='0';
for(int k=0;k<dir.size();k++)
dfs(grid,i+dir[k][0],j+dir[k][1]);
}
int numIslands(vector<vector<char>>& grid) {
int n=grid.size(),m=grid[0].size();
vector<vector<bool>> vis(n,vector<bool>(m,false));
int res=0;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
if(grid[i][j]=='1') {
res++;
dfs(grid,i,j);
}
}
return res;
}
};