题目
代码C++
class Solution {
public:
void dfs(int i,int j,vector<vector<char>>& grid)
{
if(i<0||i>=grid.size()||j<0||j>=grid[0].size()
||grid[i][j]=='2'||grid[i][j]=='0') return;
grid[i][j]='2';
dfs(i-1,j,grid);
dfs(i+1,j,grid);
dfs(i,j-1,grid);
dfs(i,j+1,grid);
}
int numIslands(vector<vector<char>>& grid)
{
int num=0;
for(int i=0;i<grid.size();i++)
{
for(int j=0;j<grid[0].size();j++)
{
if(grid[i][j]=='1')
{
num++;
dfs(i,j,grid);
}
}
}
return num;
}
};
当遍历为1的时候,就说明有一个岛屿,岛屿数量自加1。然后从四个方向上深搜,如果遇到海水或者该块陆地访问过就结束深搜,最后可以确定一个岛屿的范围。