给定一个由 '1'
(陆地)和 '0'
(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。
示例 1:
输入: 11110 11010 11000 00000 输出: 1
示例 2:
输入: 11000 11000 00100 00011 输出: 3
class Solution {
public:
int nx[50] = {0,-1,0,1};
int ny[50] = {1,0,-1,0};
void dfs(vector<vector<char>>& grid,int x,int y){
int n = grid.size();
int m = grid[0].size();
if(x<0||x>=n||y<0||y>=m||(grid[x][y]!='1')){
return ;
}
grid[x][y] = 2;
for(int i=0;i<4;i++){
int xn = x + nx[i];
int yn = y + ny[i];
dfs(grid,xn,yn);
}
}
int numIslands(vector<vector<char>>& grid) {
int num = 0;
int n = grid.size();
if(n==0){
return 0;
}
int m = grid[0].size();
if(m==0){
return 0;
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(grid[i][j]=='1'){
num++;
dfs(grid,i,j);
}
}
}
return num;
}
};