tom-winckels-I7oLRdM9YIw-unsplash.jpg

代码(抄的评论区一位大神的,改成了JS,这道题让我对BFS有了新的认知)

  1. /**
  2. * @param {character[][]} grid
  3. * @return {number}
  4. */
  5. var numIslands = function (grid) {
  6. if (grid === null || grid.length === 0) {
  7. return 0;
  8. }
  9. let count = 0;
  10. for (let i = 0; i < grid.length; i++) {
  11. for (let j = 0; j < grid[0].length; j++) {
  12. if (grid[i][j] === "1") {
  13. count++;
  14. dfs(grid, i, j);
  15. }
  16. }
  17. }
  18. return count;
  19. };
  20. const dfs = (grid, i, j) => {
  21. if (
  22. i < 0 ||
  23. i >= grid.length ||
  24. j < 0 ||
  25. j >= grid[0].length ||
  26. grid[i][j] === "0"
  27. ) {
  28. return;
  29. }
  30. grid[i][j] = "0";
  31. dfs(grid, i - 1, j);
  32. dfs(grid, i + 1, j);
  33. dfs(grid, i, j - 1);
  34. dfs(grid, i, j + 1);
  35. };