题解 | #岛屿数量#
岛屿数量
https://www.nowcoder.com/practice/0c9664d1554e466aa107d899418e814e
#include <vector>
class Solution {
public:
void dfs(vector<vector<char>>& grid, int row, int col) {
if (row < 0 || row >= grid.size() || col < 0 || col >= grid[0].size() ||
grid[row][col] == '0') {
return;
}
grid[row][col] = '0'; // 标记当前位置为已访问过
// 检查上下左右四个方向
dfs(grid, row - 1, col);
dfs(grid, row + 1, col);
dfs(grid, row, col - 1);
dfs(grid, row, col + 1);
}
int solve(vector<vector<char>>& grid) {
int m = grid.size();
if (m == 0) {
return 0;
}
int n = grid[0].size();
int numIslands = 0;
for (int row = 0; row < m; ++row) {
for (int col = 0; col < n; ++col) {
if (grid[row][col] == '1') {
++numIslands;
dfs(grid, row,
col); // 将当前岛屿的所有相邻陆地标记为已访问过
}
}
}
return numIslands;
}
};
