SOURCE

var grid = [
    ["1", "1", "1", "1", "0"],
    ["1", "1", "0", "1", "0"],
    ["1", "1", "0", "0", "0"],
    ["0", "0", "0", "0", "0"]
]

// var grid = [
//   ["1","1","0","0","0"],
//   ["1","1","0","0","0"],
//   ["0","0","1","0","0"],
//   ["0","0","0","1","1"]
// ]

const numIslands = (grid) => {
    let count = 0
    for (let i = 0; i < grid.length; i++) {
        for (let j = 0; j < grid[0].length; j++) {

            if (grid[i][j] === '1') {
                count++
                turnZero(i, j, grid)
            }
        }
    }

    return count
}
function turnZero(i, j, grid) {
    if (i < 0 || i >= grid.length || j < 0
        || j >= grid[0].length || grid[i][j] === '0') return
    grid[i][j] = '0'
    turnZero(i, j + 1, grid)
    turnZero(i, j - 1, grid)
    turnZero(i + 1, j, grid)
    turnZero(i - 1, j, grid)
}
setTimeout(() => {
    console.log(grid)

}, 3000)

// const numIslands = (grid) => {
//   let count = 0
//   let queue = []
//   for (let i = 0; i < grid.length; i++) {
//     for (let j = 0; j < grid[0].length; j++) {
//       if (grid[i][j] === '1') {
//         count++
//         grid[i][j] = '0' // 做标记,避免重复遍历
//         queue.push([i, j])
//         turnZero(queue, grid)
//       }
//     }
//   }
//   return count
// }
// function turnZero(queue, grid) {
//   const dirs = [[0, 1], [1, 0], [0, -1], [-1, 0]]
//   while (queue.length) {
//     const cur = queue.shift()
//     for (const dir of dirs) {
//       const x = cur[0] + dir[0]
//       const y = cur[1] + dir[1]
//       if (x < 0 || x >= grid.length || y < 0 || y >= grid[0].length || grid[x][y] !== '1') {
//         continue
//       }
//       grid[x][y] = '0'
//       queue.push([x, y])
//     }
//   }
// }
const i = numIslands(grid)
console.log(i)

console 命令行工具 X clear

                    
>
console