算法-岛屿问题-DFS和BFS

  1. 岛屿问题解决方案
    1. dfs
      void dfs(int[][] grid, int r, int c) {
          // 判断 base case,是否在界内
          if (!inArea(grid, r, c)) {
              return;
          }
          // 如果这个格子不是岛屿,直接返回
          if (grid[r][c] != 1) {
              return;
          }
          grid[r][c] = 2; // 将格子标记为「已遍历过」
          
          // 访问上、下、左、右四个相邻结点
          dfs(grid, r - 1, c);
          dfs(grid, r + 1, c);
          dfs(grid, r, c - 1);
          dfs(grid, r, c + 1);
      }
      
      // 判断坐标 (r, c) 是否在网格中
      boolean inArea(int[][] grid, int r, int c) {
          return 0 <= r && r < grid.length 
              	&& 0 <= c && c < grid[0].length;
      }
      

        

posted @ 2022-05-04 15:49  nlyIDE  阅读(25)  评论(0编辑  收藏  举报