class Solution { public: /** 遍历,遇到一,岛屿数加1, 直接在原矩阵中进行修改,把正在检测到的岛屿都置为0; */ int solve(vector<vector<char> >& grid) { int n=grid.size(); int m=grid[0].size(); if(n == 0){ return 0; } int count =0; for(int i=0; i<n; i++){ for(int j=0; j<m; j++){ if(grid[i][j] == '1'){ count++; dfs(grid, i, j); } } } return count; } void dfs(vector<vector<char>>& grid, int i, int j){ grid[i][j] = 0; if(j+1 < grid[0].size() && grid[i][j+1] == '1'){ dfs(grid, i, j+1); } if( i+1<grid.size() && grid[i+1][j] == '1' ){ dfs(grid, i+1, j); } if( i-1 >= 0 && grid[i-1][j] == '1' ){ dfs(grid, i-1, j); } if( j-1 >=0 && grid[i][j-1] == '1' ){ dfs(grid, i, j-1); } } };