当前位置: 首页 > 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.xdnf.cn/news/1260415.html

相关文章:

  • C# GUI程序中的异步操作:解决界面卡顿的关键技术
  • OpenCV 3 终极指南:创建炫酷自定义窗口与图像显示的艺术
  • ctfshow_萌新web9-web13-----rce
  • 自动驾驶--车辆动力学模型
  • linux安装mysql8.0,二进制码安装
  • SpringCloud(4)-多机部署,负载均衡-LoadBalance
  • 数据持久化 —— `chrome.storage` 的记忆魔法
  • Java学习进阶--集合体系结构
  • 跨域解决方案
  • Unity基于Recoder的API写了一个随时录屏的工具
  • Linux Shell:Nano 编辑器备忘
  • ConcurrentDictionary 详解:.NET 中的线程安全字典
  • simulink tlc如何通过tlc写数据入文件
  • Spring Boot + Angular 实现安全登录注册系统:全栈开发指南
  • 深入理解 Java AWT Container:原理、实战与性能优化
  • 使用Prometheus + Grafana + node_exporter实现Linux服务器性能监控
  • 【3d61638 渍韵】001 png pdf odt 5与明天各种号(虚拟文章スミレ数据)
  • 从零开始构建【顺序表】:C语言实现与项目实战准备
  • 【前端】纯代码实现Power BI自动化
  • 破界之光:DeepSeek 如何重构AI搜索引擎的文明坐标 || #AIcoding·八月创作之星挑战赛#
  • 点播服务器
  • Day10 SpringAOP
  • Linux 学习 ------Linux 入门(上)
  • DuoPlus支持导入文件批量配置云手机参数,还优化了批量操作和搜索功能!
  • DigitalProductId解密算法php版
  • 三种经典寻路算法对比
  • 在 Mac 上安装 IntelliJ IDEA
  • 2025产品经理接单经验分享与平台汇总
  • 2025最新版天猫图片搜索API全解析:从图像识别到商品匹配实战
  • TensorFlow深度学习实战(29)——自监督学习(Self-Supervised Learning)