1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| class Solution { public: int numIslands(vector<vector<char>>& grid) { int m = grid.size(), n = grid[0].size(); auto dfs = [&](this auto&& dfs, int i, int j) -> void { if (i < 0 || i >= m || j < 0 || j >= n || grid[i][j] != '1') { return; } grid[i][j] = '2'; dfs(i, j - 1); dfs(i, j + 1); dfs(i - 1, j); dfs(i + 1, j); };
int ans = 0; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (grid[i][j] == '1') { dfs(i, j); ans++; } } } return ans; } };
|
https://leetcode.cn/problems/number-of-islands/