目标:
实现步骤:
class Solution {
public:
/**
* 判断岛屿数量
* @param grid char字符型vector<vector<>>
* @return int整型
*/
void dfs(vector<vector<char>>& grid, int i, int j) {
int h = grid.size();
int k = grid[0].size();
grid[i][j] = '0';
if ((i+1 < h) && (grid[i+1][j] == '1')) dfs(grid, i+1, j);
if ((j+1 < k) && (grid[i][j+1] == '1')) dfs(grid, i, j+1);
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);
}
int solve(vector<vector<char> >& grid) {
// write code here
int num = 0;
int m = grid.size();
if (m == 0)
return 0;
int n = grid[0].size();
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (grid[i][j] == '1') {
num++;
dfs(grid, i, j);
}
}
}
return num;
}
};
总结:
想到用深度遍历思想,比较简单容易理解