题目
https://leetcode-cn.com/problems/number-of-islands/
思路
遍历二维数组,若遇到一个陆地,res+1,但是为了不重复计算,将这个陆地周围跟他连通的并且也是陆地的值设置为’0’,也就是设置为水,这样就不会重复计算,设置为水的这个过程就是一个dfs过程,对陆地的四个方向进行dfs。
code
/**
* @param {character[][]} grid
* @return {number}
*/
var numIslands = function(grid) {
let res = 0;
for (let row=0; row<grid.length; row++){
for (let col=0; col<grid[0].length; col++){
if (grid[row][col] === '1'){
res++;
dfs(row, col);
}
}
}
function dfs(row, col){
if (row<0 || row>=grid.length || col<0 || col>=grid[0].length || grid[row][col] === '0'){
return;
}
grid[row][col] = "0";
dfs(row-1, col);
dfs(row+1, col);
dfs(row, col-1);
dfs(row, col+1);
}
return res;
};