class Solution { public: int numIslands(vector<vector<char>>& grid) { if (grid.empty()) { return 0; } int len = 0; for (int i = 0; i < grid.size(); i++) { for (int j = 0; j < grid[i].size(); j++) { if (grid[i][j] == '1') { find_repair(grid, i, j); len++; } } } return len; }
private: void find_repair(std::vector<std::vector<char>>& grid, int i, int j) { if (grid[i][j] == '0' || grid[i][j] == '2') { return; } grid[i][j] = '2'; if (i-1 >= 0) find_repair(grid, i-1, j); if (j-1 >= 0) find_repair(grid, i, j-1); if (j+1 < grid[i].size()) find_repair(grid, i, j+1); if (i+1 < grid.size()) find_repair(grid, i+1, j); } };