class Solution { public: int numIslands(vector<vector<char>>& grid) { int row = grid.size(); if (!row) return 0; int col = grid[0].size(); int count = 0; for(int i = 0;i < row;i++){ for(int j = 0;j < col;j++){ if(grid[i][j] == '1'){ count++; dfs(grid,i,j); } } } return count; } void dfs(vector<vector<char>>& g,int R,int C){ int row = g.size(); int col = g[0].size(); g[R][C] = '0'; if(R+1 < row&&g[R+1][C] == '1') { dfs(g,R+1,C); } if(R-1 >= 0&&g[R-1][C] == '1') { dfs(g,R-1,C); } if(C-1 >= 0&&g[R][C-1] == '1') { dfs(g,R,C-1); } if(C+1 < col&&g[R][C+1] == '1') { dfs(g,R,C+1); } } };