题目描述
给一个01矩阵,1代表是陆地,0代表海洋, 如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。
岛屿: 相邻陆地可以组成一个岛屿(相邻:上下左右) 判断岛屿个数。
示例1
输入
[[1,1,0,0,0],[0,1,0,1,1],[0,0,0,1,1],[0,0,0,0,0],[0,0,1,1,1]]
输出
3
备注:
01矩阵范围<=200*200
题解代码
class Solution {
public:
/**
* 判断岛屿数量
* @param grid char字符型vector<vector<>>
* @return int整型
*/
void dfs(vector<vector<char>> &grid, int i, int j){
grid[i][j] = '0';
if(i-1 >= 0 && grid[i-1][j] == '1') dfs(grid, i-1, j);
if(i+1 < grid.size() && grid[i+1][j] == '1' ) dfs(grid, i+1, j);
if(j-1 >= 0 && grid[i][j-1] == '1') dfs(grid, i, j-1);
if(j+1 < grid[0].size() && grid[i][j+1] == '1') dfs(grid, i, j+1);
}
int solve(vector<vector<char> >& grid) {
int lands = 0;
for(int i = 0; i < grid.size(); i++){
for(int j = 0; j < grid[0].size(); j++){
if(grid[i][j] == '1'){
lands++;
dfs(grid, i, j);
}
}
}
return lands;
}
};