Skip to content

Commit cfe0051

Browse files
authored
Update 200. Number of Islands.cpp
1 parent ca51cba commit cfe0051

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

C++/200. Number of Islands.cpp

+21-13
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,29 @@
11
class Solution {
22
public:
33
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;
1117
}
1218

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+
}
1523
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);
2028
}
2129
};

0 commit comments

Comments
 (0)