ID:200.岛屿数量

43 阅读1分钟

题目链接

思路

逐个遍历,当发现一块陆地的时候,尽可能的向四周寻找有没有相邻的陆地,所以使用深度优先遍历找到所有相连接的陆地,然后将其标记为已被遍历过,再下一次遍历的时候不会重复遍历。

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