岛屿类问题的通用解法DFS 遍历框架

Posted Charmve

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了岛屿类问题的通用解法DFS 遍历框架相关的知识,希望对你有一定的参考价值。

在 LeetCode 中,「岛屿问题」是一个系列系列问题,比如:

L200. 岛屿数量 (Easy)
463. 岛屿的周长 (Easy)
695. 岛屿的最大面积 (Medium)
827. 最大人工岛 (Hard)

我们所熟悉的 DFS(深度优先搜索)问题通常是在树或者图结构上进行的。而我们今天要讨论的 DFS 问题,是在一种「网格」结构中进行的。岛屿问题是这类网格 DFS 问题的典型代表。网格结构遍历起来要比二叉树复杂一些,如果没有掌握一定的方法,DFS 代码容易写得冗长繁杂。

本文将以岛屿问题为例,展示网格类问题 DFS 通用思路,以及如何让代码变得简洁。

网格类问题的 DFS 遍历方法

网格问题的基本概念

我们首先明确一下岛屿问题中的网格结构是如何定义的,以方便我们后面的讨论。

网格问题是由 m \\times nm×n 个小方格组成一个网格,每个小方格与其上下左右四个方格认为是相邻的,要在这样的网格上进行某种搜索。

岛屿问题是一类典型的网格问题。每个格子中的数字可能是 0 或者 1。我们把数字为

以上是关于岛屿类问题的通用解法DFS 遍历框架的主要内容,如果未能解决你的问题,请参考以下文章

岛屿类问题通用解法与DFS框架

算法·每日一题(详解+多解)-- day13

网格类问题的DFS遍历方法

搜索2岛屿的数量(medium)

搜索2岛屿的数量(medium)

搜索2岛屿的数量(medium)