题解
刚刚做了一下,在做完刚才这题之后这道题就很好做了。
dfs 爆搜即可,进行上下左右的搜索找到一块。
代码
class Solution {
public:
void dfs(vector<vector<char>>&grid ,int i,int j){
if(i >= 0 && i < grid.size()&& j >= 0 && j < grid[0].size()&& grid[i][j] == '1'){
grid[i][j] = '0';
dfs(grid,i+1,j);
dfs(grid,i,j+1);
dfs(grid,i-1,j);
dfs(grid,i,j-1);
}
}
int numIslands(vector<vector<char>>& grid) {
int res = 0;
int row = grid.size();
int col = grid[0].size();
for(int i = 0; i < row; i++){
for(int j = 0; j < col; j++){
if(grid[i][j] == '1'){
//cout<<
dfs(grid,i,j);
res++;
}
}
}
return res;
}
};

本文介绍了一种使用深度优先搜索(DFS)算法解决岛屿数量计算问题的方法。通过遍历矩阵,对每个标记为1的位置进行DFS搜索,将其周围的1全部标记为0,以此来计算独立岛屿的数量。
869

被折叠的 条评论
为什么被折叠?



