Leetcode Graph(一) 岛屿问题

159 阅读2分钟

Leetcode 岛屿问题常由一个m*n的二维网络为基础,提出各种问题。比如:

image.png

image.png

而在解题的过程中,我们常常要用到dfs、bfs等方法进行解题。

前置课: 从二叉树的先序遍历到图的深度优先搜索

这个视频是非常棒的dfs入门视频,从二叉树入手,讲解了图和二叉树dfs的相似处,在做了岛屿问题最经典也是最简单的一道例题: LC200 岛屿数量。在做题之前推荐观看。

这个老师也有bfs的入门讲解视频,也推荐观看。但岛屿问题一般是深度优先算法。所以在这里不做要求,课后观看。

入门经典文章: 岛屿类问题的通用解法、DFS 遍历框架

文章脉络清晰,对于几个基本的岛屿问题串讲的很好。在阅读前,最好把LC200 岛屿问题弄懂,再深入弄明白岛屿问题。复习的时候直接看文章复习,看视频有点太花时间。

题目(按顺序做)

题外话

  1. 这几道题,我在弄懂LC200后都是自己解出来的。但是如果不仔细想明白就写题很容易掉到坑里,出现bug。
  2. hard题和Medium的题 思路的难度差不多 难在解题的长度和细节,需要更细心和仔细。相信自己,好好去解,就能解出来。
  3. 以上差不多一天解完。

题目二

微变形:

这道题不是dfs的题,是bfs的题。不知道为什么放到了这里。

常见错误

自己在解题中虽然思路正确但代码出现的粗心大意的问题有:

  1. int m,n 在local scope里重新定义
  2. 忘记对m,n 进行赋值。忘记 m = grid.size(), n = grid[0].size()