breadth-first-search - 在矩阵中显式查找孤岛
问题描述
我得到一个由 0 和 1 组成的矩阵,并且必须找到由一个矩阵组成的岛屿。如果找到参考:
https://www.careercup.com/question?id=14948781
关于谁来计算岛屿的数量,但根本不知道如何调整算法以最终获得岛屿列表,给定属于它们的矩阵的单元列表。
解决方案
这个问题本质上是要求您找到无向图的连通分量。在这里,连通分量是一组被 0 包围的 1,并且该组中的任何 1 都没有连接到由 0 包围的另一个单独的 1 组。
为了解决这个问题,您可以首先对 2D 矩阵中的每个元素执行深度优先搜索 (DFS)。
- 如果算法遇到未访问的 1,则增加岛的计数
- 递归地对所有相邻顶点(上、下、左、右)执行 DFS
- 跟踪访问过的 1,以便它们不再被访问(可以使用集合或通过使用布尔标志标记访问过的图中的节点来完成)
- 在此递归 DFS 期间一旦发现 0,立即停止 DFS
- 通过移动到 2D 矩阵中的下一个元素并重复步骤 1-4 来继续算法
- 当您到达 2D 矩阵的末尾时,返回岛屿的数量
推荐阅读
- mongodb - MongoDB 聚合中的 $$ROOT 是什么以及它是如何工作的?
- c# - 从 Newtonsoft.JSON 中的 Json 路径获取 JProperty
- performance-testing - System.MarshalByRefObject Visual Studio 2019 负载测试
- python - Pandas groupby 训练/验证拆分
- c# - 在 .NET Standard 中创建桌面快捷方式
- swift4 - 需要将图标作为按钮快速放置在标签的右上角
- docker - .docker 目录用于什么目的?
- typescript - 如何定义一个接口,其键限制为此类对象数组中每个对象中包含的属性值的联合?
- javascript - 为什么 document.cookie 不是从 Chrome 扩展程序写入的?
- reactjs - 使用 React.lazy 与 webpack 动态导入?