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
| class Solution { public: int numIslands(vector<vector<char>>& grid) { if (grid.empty() || grid[0].empty()) return 0; int n = grid.size(), m = grid[0].size(); int res = 0; int dx[] = {0, 0, -1, 1}, dy[] = {-1, 1, 0, 0}; for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { if (grid[i][j] == '1') { ++res; dfs(grid, i, j, dy, dx, n, m); } } } return res; }
void dfs(vector<vector<char>> &grid, int i, int j, int dy[], int dx[], int n, int m) { if (i < 0 || j < 0 || i >= n || j >= m || grid[i][j] == '0') return; grid[i][j] = '0'; for (int k = 0; k < 4; ++k) { dfs(grid, i + dy[k], j + dx[k], dy, dx, n, m); } } };
|