/**
* @param {character[][]} grid
* @return {number}
*/
var numIslands = function (grid) {
// 计数
let count = 0
// 深度优先
dfs = (row, col) => {
// 超出变成 或者 起始点为 0
if (row < 0 || row >= grid.length || col < 0 || col >= grid[0].length || grid[row][col] === '0') {
// 直接跳出
return
}
// 将 1 沉没为 0
grid[row][col] = '0'
// 扩张一下
dfs(row, col - 1)
dfs(row, col + 1)
dfs(row - 1, col)
dfs(row + 1, col)
}
// 遍历数组
for (let row = 0; row < grid.length; row++) {
for (let col = 0; col < grid[0].length; col++) {
// 如果有一个 1 就是一个岛屿
if (grid[row][col] === '1') {
// 计数
count++
// 沉没一下
dfs(row, col)
}
}
}
return count
}