2021-10-27 链表,双指针
环形链表
如上图所示,链表出现了环的结构。
操作一:判断一个链表是否为环形链表
最初思考:暴力就好了,每个节点附带一个flag域,初始化为0,如果第一次访问过就是1,一直p=p->next下去,如果找到某个节点的flag是1不是0,那么返回status==TRUE;
不难看出来,如果链表是一个首尾相顾的环,这样子做空间复杂度是O(N)【因为多了很多个flag域】,而且此时最糟糕的时间复杂度是O(N)
有没其他办法?
有的!双指针!
如果有环,类比于队列,一定会有"回溯"这个过程,那么假设两个指针一快一慢,那么快指针必定会先遍历完整个链表,之后进入"回溯"的过程,这样子,总会有快指针追上慢指针的时候。当快指针追上慢指针的时候,就说明这个链表不是单向的了,而是有一个闭环。
Status isCircle(List a){Polynode fast=a,slow=a;if(!a) return false;while(fast&&fast->next){"(测试条件其实也起到了排查探路的作用,一下子排查两个位点)"fast=fast->next->next;-----"快指针一下子走两格""(不要怕fast->next是空指针报错,这就是为什么要在入口判断处加上"fast->next"的原因)"slow=slow->next;-----------"慢指针每次只前进一格"if(slow==fast)return true;"(如果有出现slow和fast重合的情况,我们就直接退出函数,返回个true)"}"(循环能出来肯定就是因为fast或者fast->next为空,因为重合的情况已经在上面处理过了)"return false;}
操作二:寻找环的入口
环的入口位置的证明设计数论知识(
2021-10-27 链表,双指针相关推荐
- MPC模型预测控制学习笔记-2021.10.27
MPC模型预测控制学习笔记-点击目录就可以跳转 1. 笔者介绍 2. 参考资料 3. MPC分类 4. 数据的标准化与归一化 5. MATLAB-MPC学习笔记 5.1 获取测试信号:gensig( ...
- Θ(n)反转单链表(算法导论第三版第十章10.2-7)
Θ(n)反转单链表 (算法导论第三版第十章10.2-7) template<typename T> void reverses(Single_L<T> &l) {if( ...
- [2021.1.27多校省选模拟10]跑步(线段树合并)
[2021.1.27多校省选模拟10]跑步 经典的树上启发式合并题目,维护对应子树的从当前点到子树内一个节点这个链待定,其他部分已经确定的方案数,这个东西按照对应点到根节点的路径点权和为下标存在一个权 ...
- [2021.1.27多校省选模拟10]染色(min-max容斥/二项式反演)
[2021.1.27多校省选模拟10]染色 突然发现我对概率期望的理解不是很好... 部分分1:可以直接进行状压dp,然后按照题意模拟即可. 部分分2:首先可以发现这个问题是min_max容斥形式,然 ...
- leetcode刷题记录2:进度64, 2021.10.23
文章目录 数组的度(题目编号697:[link](https://leetcode-cn.com/problems/degree-of-an-array/)) 二叉搜索树(题目编号700:[link] ...
- LeetCode 2130. 链表最大孪生和(链表快慢指针+反转链表+双指针)
文章目录 1. 题目 2. 解题 1. 题目 在一个大小为 n 且 n 为 偶数 的链表中,对于 0 <= i <= (n / 2) - 1 的 i ,第 i 个节点(下标从 0 开始)的 ...
- 2021.10.25-10.31 AI行业周刊(第69期):AI进化之路
本周<Opencv基础及AI项目实战>以及<Pytorch模型推理及多任务通用范式>两门课程已经完结. 两门课程中,针对所有完成作业的同学,都颁发了毕业证书. 并且对于完成比较 ...
- python爬虫爬美女图片:“小甲鱼056节轮一只爬虫的自我修养4:OOXX” 最终更新2021.6.27日,更新后可用!!!
目录 2020.10.25日更新 代码: 2020.11.10日更新 代码 2021.6.27日更新,更新后可用 2020.10.25日更新 需要改动有两个方面: 第一方面,网址编码有变化,如http ...
- Python 最近两条好消息:①TIOBE排名超过C和Java②新版本发布3.10.0,还有今天刚发布的《What’s New in Python(2021.10.15)》
来自TIOBE的最新10月份统计数据显示,Python首次超越Java.JavaScript.C语言等,成为最受欢迎的编程语言.TIOBE过去20年一直在追踪编程语言的受欢迎程度,其数据来自于对25个 ...
- 2021.05.27 发表自己第一篇技术文章
从昨晚开始做家庭财经系统.不要以为有系统两个字就怎么复杂,都是大家都会的.建库.建表. 第一个使用软件是mysql 2021.05.26 数据库 lianxi 已建好. 表 members_basic ...
最新文章
- 机器视觉中如何选择工业相机与合适的相机镜头
- Linux-gate.so.1的含义[ZZ]
- 学会选择最适合自己的GPS定位系统源码
- 全球及中国服务器电源行业市场深度策略分析及投资规划咨询建议报告2022-2028年版
- pythonweb开发需要学哪些知识,python web需要了解哪些
- mysql对所有列的数据进行修改6_MySQL的SQL语句 - 数据定义语句(6)- ALTER TABLE 语句 (3)...
- 视频专辑:Servlet视频教程
- python 系统学习实例1.1 - 华氏度与摄氏度的转换
- 预训练语言模型论文分类整理
- unity中的rigibody 和 collider 讲解
- Windows 7 测试体验
- 管理新语:说说工作的主动权
- sql over 用法
- java调用平方函数_java中的数学计算函数的总结
- 如何执行冲刺sprint
- 研发工程师-编程题(python)
- 深度强化学习篇2:从Playing Atari with Deep Reinforcement Learning 看神经网络的输入,学习的状态空间
- android anr 文件路径,android出现ANR 如何导出anr文件
- 事件参数$event
- 光缆常用的设备测试方法介绍