class Solution {
public:
int numIslands(vector<vector<char>>& grid) {
if (grid.empty() || grid[0].empty()) {
return 0;
}
int rows = grid.size();
int cols = grid[0].size();
vector<vector<bool>> visited(rows, vector<bool>(cols, false));
int count = 0;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
if (grid[i][j] == '1' && !visited[i][j]) {
count++;
dfs(grid, rows, cols, i, j, visited);
}
}
}
return count;
}
void dfs(vector<vector<char>>& grid, int rows, int cols, int i, int j, vector<vector<bool>>& visited) {
if (i < 0 || i >= rows || j < 0 || j >= cols || visited[i][j] || grid[i][j] != '1') {
return;
}
visited[i][j] = true;
int x[4] = {0, 1, 0, -1};
int y[4] = {1, 0, -1, 0};
for (int idx = 0; idx < 4; idx++) {
i = i + x[idx];
j = j + y[idx];
dfs(grid, rows, cols, i, j, visited);
i = i - x[idx];
j = j - y[idx];
}
}
};
转载请注明原文地址:https://blackberry.8miu.com/read-39933.html