https://leetcode-cn.com/problems/number-of-islands/
给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。
岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。
此外,你可以假设该网格的四条边均被水包围。
题解:利用深度优先搜索,遍历整个网格,遇到1,岛屿数就加1,然后将该岛屿炸毁(因为已经计数过了),炸毁:就是将该岛屿置为0
/**
* @param {character[][]} grid
* @return {number}
*/
function dfs(grid,i,j){
let r=grid.length
let c=grid[0].length
if(i<0 || j<0 || i>=r || j>=c || grid[i][j]==='0'){
return
}
grid[i][j]='0'
dfs(grid,i+1,j)
dfs(grid,i-1,j)
dfs(grid,i,j+1)
dfs(grid,i,j-1)
}
var numIslands = function(grid) {
let r=grid.length
if(r===0){
return 0
}
let c=grid[0].length
let sum=0
for(let i=0;i<r;i++){
for(let j=0;j<c;j++){
if(grid[i][j]==='1'){
sum++
dfs(grid,i,j)
}
}
}
return sum
};