岛屿数量「变题」

200. 岛屿数量

 

开头先来一个小插曲,关于「岛屿」类题目的总结可见 秒杀所有岛屿题目(DFS)

DFS

BFS

解释一下为什么 BFS 的空间复杂度是 O(min(m,n))

假设最坏的情况:所有地方都是岛屿,从(0, 0)开始搜索,结合 BFS 的特点,如下图所示

1

每一种颜色表示队列需要容纳的元素个数,最大为 4,也就是 min(m,n)

注意:这是从(0, 0)开始搜索,如果换一个点开始搜索,结果就会不同,如下图所示

2

绿色和橙色的数量最多 (7 个),表示队列最多需要容纳 7 个元素

并查集

解释:find()方法使用了路径压缩,每执行一次就会将树拉平一部分,详情可见 并查集(Union-Find)

变题一:岛屿的最大面积

题目详情可见 岛屿的最大面积

变题二:加一个陆地后最大岛屿面积

题目详情可见 最大人工岛

变题三:岛屿的周长

题目详情可见 岛屿的周长

变题四:统计封闭岛屿的数目 (四周没有封闭)

题目详情可见 统计封闭岛屿的数目

变题五:修改封闭区域

题目详情可见 被围绕的区域

变题六:统计子岛屿

题目详情可见 统计子岛屿

变题七:太平洋大西洋水流问题

题目详情可见 太平洋大西洋水流问题

变题八:BFS 典型应用

题目详情可见 腐烂的橘子

BFS 的典型应用!!!

变题九:不同形状岛屿的数量

题目详情可见 不同岛屿的数量

由于这是一道会员题,给出题目描述的截图,如下图所示

image-20230220204802814

这个题目和 寻找重复的子树 如出一辙,通过记录路径,然后借助Set去重