1、题目描述
2、分析
这道题求岛屿数量,岛屿是周围都是水,二维数组中1为岛屿,0为水,并且连着的岛屿算一个。求给定的数组中岛屿的数量。我们可以遍历,在找到一个岛屿的时候,计数加1,把它设为0,对其进行深搜,找其周围是否还存在岛屿,如果存在也将其设置为0,然后再找其余的1进行遍历。
3、代码
class Solution {
public:
int numIslands(vector<vector<char>>& grid) {
if(grid.size()==0) return 0;
int sum=0;
for(int i=0;i<grid.size();++i){
for(int j=0;j<grid[0].size();++j){
if(grid[i][j]=='1'){
++sum;
DFS(i,j,grid);
}
}
}
return sum;
}
void DFS(int x,int y,vector<vector<char>>& map){
if(x<0||x>=map.size()||y<0||y>=map[0].size()) return ;
if(map[x][y]=='1'){
map[x][y]='0';
DFS(x-1,y,map);
DFS(x+1,y,map);
DFS(x,y-1,map);
DFS(x,y+1,map);
}
}
};
4、相关知识点
DFS。小技巧,修改值。