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]);
}
}