题解 | #岛屿数量#DFS
岛屿数量
https://www.nowcoder.com/practice/0c9664d1554e466aa107d899418e814e
BFS或者DFS均可,DFS使用递归代码量稍少一些
class Solution {
public:
vector<int> directions{-1, 0, 1, 0, -1};
int solve(vector<vector<char> > &grid) {
if (grid.empty() || grid[0].empty()) return 0;
int cnt = 0;
int sz_l = grid.size();
int sz_h = grid[0].size();
for (int i = 0; i < sz_l; ++i) {
for (int j = 0; j < sz_h; ++j) {
if (grid[i][j] == '0') continue;
dfs(grid, i, j);
++cnt;
}
}
return cnt;
}
void dfs(vector<vector<char>> &grid, int i, int j) {
if (grid[i][j] == '0') return ;
grid[i][j] = '0';
for (int d = 0; d < 4; ++d) {
if (i + directions[d] >= 0 && i + directions[d] < grid.size() && \
j + directions[d + 1] >= 0 && j + directions[d + 1] < grid[0].size()) {
dfs(grid, i + directions[d], j + directions[d + 1]);
}
}
}
};
查看14道真题和解析
顺丰集团工作强度 318人发布