DFS + 染色版本
function numIslands(grid) { if (!Array.isArray(grid)) { return 0; } if (!Array.isArray(grid[0])) { return 0; } let landNum = 0; for (let i = 0; i < grid.length; i++) { for (let j = 0; j < grid[0].length; j++) { if (grid[i][j] === '1') { landNum++; dfs(grid, i, j) } } } return landNum;}function dfs(grid, i, j) { let m = grid.length; let n = grid[0].length; let direction = [ [0, 1], [0, -1], [1, 0], [-1, 0] ]; if (i < 0 || i >= m || j < 0 || j >= n || grid[i][j] != '1') { return; } grid[i][j] = '0'; for (let d = 0; d < direction.length; d++) { dfs(grid, i + direction[d][0], j + direction[d][1]); }}