leetcode 200 岛屿数量 JavaScript
思路:BFS/DFS
找岛屿 所有1连成的算一个岛屿,因此很明显需要用到BFS/DFS来解决,下面写的是DFS
那么要考虑一个问题,就是要在岛屿+1的同时,把周围的1都进行标记,假设标记为2
直到岛屿所有的1都变为2
再直到整个图递归完成
/**
* @param {character[][]} grid
* @return {number}
*/
var numIslands = function (grid) {
let islandNum = 0
for (let i = 0; i < grid.length; i++) {
for (let j = 0; j < grid[0].length; j++) {
if (grid[i][j] == '1') {
infect(grid, i, j)
islandNum++
}
}
}
return islandNum
};
function infect(grid, i, j) {
if (i < 0 || i >= grid.length || j < 0 || j >= grid[0].length || grid[i][j] !== '1') return
grid[i][j] = '2'
infect(grid, i + 1, j)
infect(grid, i - 1, j)
infect(grid, i, j + 1)
infect(grid, i, j - 1)
}