|
1 | 1 | class Solution {
|
2 | 2 | public:
|
3 | 3 | int numIslands(vector<vector<char>>& grid) {
|
4 |
| - if(grid.size() == 0 || grid[0].size() == 0) return 0; |
5 |
| - int count = 0; |
6 |
| - int m = grid.size(), n = grid[0].size(); |
7 |
| - for(int i = 0; i < m; i++) |
8 |
| - for(int j = 0; j < n; j++) |
9 |
| - if(grid[i][j] == '1') count++, BFS(grid, i, j, m, n); |
10 |
| - return count; |
| 4 | + if (grid.empty()) { |
| 5 | + return 0; |
| 6 | + } |
| 7 | + int res = 0, m = grid.size(), n = grid[0].size(); |
| 8 | + for (int i = 0; i < m; ++i) { |
| 9 | + for (int j = 0; j < n; ++j) { |
| 10 | + if (grid[i][j] == '1') { |
| 11 | + ++res; |
| 12 | + dfs(grid, i, j, m, n); |
| 13 | + } |
| 14 | + } |
| 15 | + } |
| 16 | + return res; |
11 | 17 | }
|
12 | 18 |
|
13 |
| - void BFS(vector<vector<char>>& grid, int r, int c, int m, int n){ |
14 |
| - if(r < 0 || c < 0 || r >= m || c >= n || grid[r][c] == '0') return; |
| 19 | + void dfs(vector<vector<char>>& grid, int r, int c, int& m, int& n) { |
| 20 | + if (r < 0 || c < 0 || r == m || c == n || grid[r][c] == '0') { |
| 21 | + return; |
| 22 | + } |
15 | 23 | grid[r][c] = '0';
|
16 |
| - BFS(grid, r - 1, c, m, n); |
17 |
| - BFS(grid, r + 1, c, m, n); |
18 |
| - BFS(grid, r, c + 1, m, n); |
19 |
| - BFS(grid, r, c - 1, m, n); |
| 24 | + dfs(grid, r + 1, c, m, n); |
| 25 | + dfs(grid, r - 1, c, m, n); |
| 26 | + dfs(grid, r, c - 1, m, n); |
| 27 | + dfs(grid, r, c + 1, m, n); |
20 | 28 | }
|
21 | 29 | };
|
0 commit comments