算法-岛屿问题-DFS和BFS

2022/5/4 17:12:47

本文主要是介绍算法-岛屿问题-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;
      }
      

        



这篇关于算法-岛屿问题-DFS和BFS的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程