思路
逐个遍历,当发现一块陆地的时候,尽可能的向四周寻找有没有相邻的陆地,所以使用深度优先遍历找到所有相连接的陆地,然后将其标记为已被遍历过,再下一次遍历的时候不会重复遍历。
var numIslands = function (grid) {
let result = 0;
const dfs = (i, j) => {
if (grid[i][j] !== "1") return;
grid[i][j] = "-1";
i > 0 && dfs(i - 1, j);
i < grid.length - 1 && dfs(i + 1, j);
j > 0 && dfs(i, j - 1);
j < grid[0].length - 1 && dfs(i, j + 1);
};
for (let i = 0; i < grid.length; i++) {
for (let j = 0; j < grid[0].length; j++) {
if (grid[i][j] === "1") {
result += 1;
dfs(i, j);
}
}
}
return result;
};