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

快慢指针法检测环

快慢指针法检测环

环形的数据结构是一种常见的数据结构组织形式。它的一个好处是首尾相连,知道尾元素就能知道首元素,通常也只需保留一个跟踪节点或者迭代器。有时我们需要判断一个数据结构是否形成环,一个简单的方法是准备一个容器,将该数据结构的所有迭代器保存,然后遍历数据结构,每次读取一个元素时判断该元素是否已经在准备的容器中,时间复杂度\(O(N)\),空间复杂度\(O(N)\);另一个方法是使用快慢指针法,又叫做Floyd 判圈算法,过程是准备两个指针或者两个迭代器,其中一个步长是一个单位,另一个步长是两个单位,根据它们的相对速度,如果是在环中,它们最终会相遇。模型图如下:

快慢指针法

在模型图中假设快指针与满指针在同一个位置,事实上,按照快慢指针法的方法,快指针与慢指针可以不在同一个位置。时间复杂度\(O(N)\),空间复杂度\(O(1)\)


代码如下:

listCircular<int>::iterator fast_ = test.begin( );
listCircular<int>::iterator slow_ = test.begin( );
do {fast_ = fast_ + 2;++slow_;
} while( fast_ != slow_ );
if( fast_ == slow_ )// 标记为环

代码比较简洁,可以根据需要做一些改变,比如一些安全检查等。

http://www.sczhlp.com/news/1073/

相关文章:

  • java笔记
  • 2025.7.29
  • 【即将截稿、IEEE出版、往届会后3个月检索】第七届物联网、自动化和人工智能国际学术会议(IoTAAI 2025)
  • valtio
  • WebRTC
  • 基于模糊控制的避障导航算法
  • MySQL JSON数据存储结构与操作
  • TypeScript 无法识别 .vue 文件的类型
  • halcon_01_HALCON基础语法变量与数据类型
  • Nginx:怎么携带参数重定向
  • Unity调整自适应分辨率
  • 【哈尔滨信息工程学院主办、往届三个月发表】第五届电子材料与信息工程国际学术会议 (EMIE 2025)
  • wpf 进度条
  • P1896 [SCOI2005] 互不侵犯
  • P1879 [USACO06NOV] Corn Fields G
  • P1270 “访问”美术馆
  • 20250726模拟赛T1
  • element plus table 修改勾选中的背景颜色
  • Java使用直接内存的好处
  • Jenkins Pipeline 中的主要组件解释
  • 在powershell窗口执行npm install无法运行
  • SVC总结与思考
  • 国产高精度芯片LHA8961,代替AD7690
  • 【IEEE出版、往届均完成EI检索】第六届计算机视觉与数据挖掘国际学术会议(ICCVDM 2025)
  • 平衡树的一些记录和带插入区间K小值
  • 基于块匹配的全景图像拼接
  • 【ACM独立出版、EI快速稳定检索】第二届虚拟现实、图像和信号处理国际学术会议(VRISP 2025)
  • BMP图像原理与应用
  • 亚马逊AI模型评估产品评论中的实用建议有效性
  • DNS协议