当前位置: 首页 > news >正文

优选算法系列(8.多源BFS)

简介·:

01 矩阵(medium):

题目链接:542. 01 矩阵 - 力扣(LeetCode)

算法:

对于求的最终结果,我们有两种方式:
  • 第⼀种方式:从每⼀个 1 开始,然后通过层序遍历找到离它最近的 0 这⼀种方式,我们会以所有的 1 起点,来⼀次层序遍历,势必会遍历到很多重复的点。并且如果矩阵中只有⼀个 0 的话,每⼀次层序遍历都要遍历很多层,时间复杂度较高·。
  • 换⼀种方式:从 0 开始层序遍历,并且记录遍历的层数。当第⼀次碰到 1 的时候,当前的层数就是这个 1 0 的最短距离。 这⼀种方式,我们在遍历的时候标记⼀下处理过的 1 ,能够做到只用遍历整个矩阵⼀次,就能得到最终结果。
但是,这里有⼀个问题, 0 是有很多个的,我们怎么才能保证遇到的 1 距离这⼀个 0 是最近的呢?
其实很简单,我们可以先把所有的 0 都放在队列中,把它们当成⼀个整体,每次把当前队列里面的所有元素向外扩展⼀次。
第一层:
第二层:
第三层:
C++:

 java:

飞地的数量(medium) 

题目链接:1020. 飞地的数量 - 力扣(LeetCode)

算法:

正难则反:
  • 从边上的 1 开始搜索,把与边上 1 相连的联通区域全部标记⼀下;
  • 然后再遍历⼀遍矩阵,看看哪些位置的 1 没有被标记即可
标记的时候,可以⽤「多源 bfs 」解决。
和 算法系列6 中的 被围绕的区域(medium) 差不多,那里使用的是单源BFS
C++:

Java:

地图中的最高点(medium)

题目链接:1765. 地图中的最高点 - 力扣(LeetCode)


算法;

01矩阵的变型题,直接用多源 bfs 解决即可。

地图分析(medium):

题目链接:1162. 地图分析 - 力扣(LeetCode)


算法:

01矩阵的变型题,直接⽤多源 bfs 解决即可

相关文章:

  • 个人网站versionI正式上线了!Personal Website for Jing Liu
  • RISC-V架构深度解析
  • 高组装导轨的特点
  • 【Prometheus】 kube-state-metrics中的指标kube_pod_labels
  • 元子与元组的关系解析:从简单到复杂大跨界大综合的融智学研究
  • SSRF请求伪造
  • 分布式架构详解
  • Ceph 原理与集群配置
  • 驱动开发硬核特训 · 专题篇:Vivante GPU 与 DRM 图形显示体系全解析(i.MX8MP 平台实战)
  • 50个精选DeepSeek指令
  • QT中connect高级链接——指针、lambda、宏
  • Linux云计算训练营笔记day03(Rocky Linux中的命令)
  • MySQL OCP 认证限时免费活动​ 7 月 31 日 前截止!!!
  • Linux中的线程安全与线程同步详解
  • WordPress个人博客搭建(三):WordPress网站优化
  • vue3:十二、图形看板- 基础准备+首行列表项展示
  • 用go从零构建写一个RPC(仿gRPC,tRPC)--- 版本1(Client端)
  • 国产数据库铸就数字基建新基石,助力农业产业转型升级
  • yolov8n-obb训练rknn模型
  • 矩阵系统源码搭建 UI 设计开发指南,支持OEM
  • 北外滩集团21.6亿元摘上海虹口地块,为《酱园弄》取景地
  • 泉州一家婚介机构广告牌越南新娘七天闪婚领证?市监部门介入
  • 经济日报:降准降息,提前还房贷划算吗?
  • 三大交易所多举措支持科创债再扩容,约160亿证券公司科创债有望近期落地
  • 印巴局势快速升级,外交部:呼吁印巴以和平稳定的大局为重
  • 8小时《大师与玛格丽特》:长度可以是特点,但不是价值标准