algorithm - 算法 - 矩阵中被另一种颜色包围的颜色
问题描述
我最近在一次采访中遇到了这个问题:
给定以下矩阵:
[[ R R R R R R],
[ R B B B R R],
[ B R R R B B],
[ R B R R R R]]
找出是否有任何一组仅 R或仅 B在 4 个方向上被相反颜色包围:上、下、左、右角。
例如:上述矩阵的答案 -> 第二行中被 R 包围的有效 B 集。
[[ R R R R R R],
[ R **B B B** R R],
[ B R R R B B],
[ R B R R R R]]
我尝试对所有方向的特定颜色进行 BFS,但无法找到解决方案。有人可以指导我解决问题。
解决方案
要找到被 R 细胞包围的 B 细胞组,请将矩阵视为一个图,其顶点是所有 B 细胞,边连接相邻的 B 细胞。使用 BFS(或 DFS)查找此图的连通分量,但忽略边界上包含单元的连通分量。每个(非边界)连通分量包含一组被 R 细胞包围的 B 细胞。然后,为了找到被 B 细胞包围的 R 细胞组,类似地计算图的非边界连通分量,其顶点是 R 细胞。
由于两个图的顶点数和边数均为 ,并且图O(mn)
的连通分量集合可以在与图大小成线性关系的时间内找到,因此该算法的运行时间为O(mn)
.
推荐阅读
- reactjs - 不支持扩展 create-react-app 获取 src/ 之外的相对导入
- python - 如何将 Stanza Word 标记化数据保存在单个 CSV 文件中?
- javascript - 如何在 javascript 中存储玩家猜测并检查字母字符
- ubuntu - 如何连接到使用 vmwares vmrun CLI 命令启动的虚拟机的 GUI?
- c# - 如何为不和谐机器人编写单元测试
- spring-boot - 使用 String 时 MockMVC @PathVariable 不起作用
- oracle - Apex 链接构建器值 - 项目未显示在目标页面上
- r - 使用频率表数据中的 ggplot 分组条形图
- python - 使用 Pandas 比较每 2 行并显示不同的
- amazon-web-services - 如何在 Windows Server 上的 Elastic Beanstalk 部署中正确使用 AWS Secrets Manager