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

[链表]142. 环形链表 II

142. 环形链表 II

这道题有两问。第一问是链表有没有环?第二问是找到这个环的入口。

如何想到用快慢指针判断他是否有环?如果一个链表没有环,是一条直线,快慢指针速度不同,那么快慢指针是不可能相遇的;除非这个链表有环让快指针绕圈了,随后慢指针也进入这个圈,然后两个指针相遇

首先定义一个快指针,每次走两个节点;慢指针从起点出发,每次走一个节点;如果快慢是真相遇了,那么他们一定在环里相遇。如果快慢指针相遇了,说明这个链表有环。

那么快慢指针为什么会相遇呢?

快指针每次走两个节点。慢指针每次走第一个节点。那么快指针一定先进入这个环,然后慢指针才进入这个环。快指针一定会去追慢指针。快指针每次相对于慢指针走一个节点,所以他们一定会相遇,而不会让快指针跳过慢指针。(如果快指针一次走三个节点可能就跳过了。因为快指针每次相对于慢指针走两个节点可能就跳过了。)这样我们就明确了为什么一定可以使用双指针的方法来解这道题。快指针每次走两个节点,慢指针每次走一个节点。如果这个链表有环,那么他们一定会在环里相遇。

接下来我们来看如何找到这个环的入口?

Python代码:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = Noneclass Solution:def detectCycle(self, head: Optional[ListNode]) -> Optional[ListNode]:fast, slow= head, headwhile fast != None and fast.next != None :fast = fast.next.nextslow = slow.nextif (fast == slow):index1 = fastindex2 = headwhile(index1 != index2):index1 = index1.nextindex2 = index2.nextreturn index1return None

http://www.dtcms.com/a/320794.html

相关文章:

  • 【洛谷题单】--分支结构(二)
  • 为什么需要锁升级?从CPU缓存到JVM的优化艺术
  • Autosar AP中Promise和Future的异步消息通信的详细解析
  • Kotlin 数据容器 - MutableList(MutableList 概述、MutableList 增删改查、MutableList 遍历元素)
  • 【JVM】流程汇总
  • OpenSCA开源社区每日安全漏洞及投毒情报资讯—2025年8月7日
  • OCC 主要库和功能模块
  • AI对互联网公司职位改变?
  • Android 系统的基本安全属性
  • 恒科持续低迷:新能源汽车股下跌成拖累,销量担忧加剧
  • ZCC3094--30V,-500mA超低噪声线性稳压电源
  • HFSS许可证常见问题及解决方案
  • 分享超图提供的、很不错的WebGIS学习资源
  • 分布式微服务--GateWay的断言以及如何自定义一个断言
  • 【昇腾】基于RK3588 arm架构Ubuntu22.04系统上适配Atlas 200I A2加速模块安装EP模式下的驱动固件包_20250808
  • simulink tlc如何通过tlc写数据入文件
  • 三种 SSE 对比
  • 秋招笔记-8.8
  • Django模型开发全解析:字段、元数据与继承的实战指南
  • C++简单项目跟练【通讯录管理系统000】
  • 持中文的 TXT 合并 PDF 工具 —— GUI + ReportLab 实战
  • 基于定制开发开源AI智能名片S2B2C商城小程序的定价策略与市场定位研究
  • UniApp Vue3 TypeScript项目中使用xgplayer播放m3u8视频的显示问题
  • AI学习笔记三十五:实时传输视频
  • webrtc弱网-EncodeUsageResource类源码分析及算法原理
  • Baumer相机如何通过YoloV8深度学习模型实现高速公路车辆的实时检测计数(C#代码UI界面版)
  • 云原生时代的 Linux:容器、虚拟化与分布式的基石
  • 深入理解VideoToolbox:iOS/macOS视频硬编解码实战指南
  • 微软公布Windows 2030,要彻底淘汰鼠标、键盘
  • token过期为了保证安全,refresh token不过期,那么拿到refresh token就可以获取token,不还是不安全吗