题解 | #岛屿数量#
岛屿数量
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; } };