代码(抄的评论区一位大神的,改成了JS,这道题让我对BFS有了新的认知)
/**
* @param {character[][]} grid
* @return {number}
*/
var numIslands = function (grid) {
if (grid === null || grid.length === 0) {
return 0;
}
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++;
dfs(grid, i, j);
}
}
}
return count;
};
const dfs = (grid, i, j) => {
if (
i < 0 ||
i >= grid.length ||
j < 0 ||
j >= grid[0].length ||
grid[i][j] === "0"
) {
return;
}
grid[i][j] = "0";
dfs(grid, i - 1, j);
dfs(grid, i + 1, j);
dfs(grid, i, j - 1);
dfs(grid, i, j + 1);
};