DFS + 染色版本

  1. function numIslands(grid) {
  2. if (!Array.isArray(grid)) {
  3. return 0;
  4. }
  5. if (!Array.isArray(grid[0])) {
  6. return 0;
  7. }
  8. let landNum = 0;
  9. for (let i = 0; i < grid.length; i++) {
  10. for (let j = 0; j < grid[0].length; j++) {
  11. if (grid[i][j] === '1') {
  12. landNum++;
  13. dfs(grid, i, j)
  14. }
  15. }
  16. }
  17. return landNum;
  18. }
  19. function dfs(grid, i, j) {
  20. let m = grid.length;
  21. let n = grid[0].length;
  22. let direction = [
  23. [0, 1],
  24. [0, -1],
  25. [1, 0],
  26. [-1, 0]
  27. ];
  28. if (i < 0 || i >= m || j < 0 || j >= n || grid[i][j] != '1') {
  29. return;
  30. }
  31. grid[i][j] = '0';
  32. for (let d = 0; d < direction.length; d++) {
  33. dfs(grid, i + direction[d][0], j + direction[d][1]);
  34. }
  35. }