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

相关文章:

  • Java 大视界 -- 基于 Java 的大数据分布式计算在气象灾害数值模拟与预警中的应用(388)
  • 大模型性能测试实战指南:从原理到落地的全链路解析
  • 【Day 19】Linux-网站操作
  • 小程序难调的组件
  • Vite 深度解析:现代前端开发引擎
  • AI 记忆管理系统:工程实现设计方案
  • Introducing Visual Perception Token into Multimodal Large Language Model论文解读
  • 脚本统计MongoDB集合结构信息
  • 关于数据结构6-哈希表和5种排序算法
  • WSL安装MuJoco报错——FatalError: gladLoadGL error
  • Vue框架总结案例
  • HTML <picture> 元素:让图片根据设备 “智能切换” 的响应式方案
  • OpenAI 开源 GPT-OSS:1200亿参数推理模型上线,完全免费、商用可用,全民可控智能体时代正式开启!
  • 《前端60问:从设备判断到性能优化全解》
  • PeiQi网络安全知识文库PeiQi-WIKI-Book保姆式搭建部署教程
  • Nearest Smaller Values(sorting and searching)
  • 饿了么零售 sign 分析
  • lmbench在麒麟V10的编译测试
  • 水系热力图:制作化学污染物浓度值热力图
  • 深入理解 Java AWT Container:原理、实战与性能优化
  • vue项目常见BUG和优化注意事项
  • 论文reading学习记录7 - daily - ViP3D
  • Cesium 模型3dtiles压平,任意多面压平,无闪烁
  • 适用于在线3D测量和检测的3D激光轮廓仪
  • 什么是SSL证书颁发机构?
  • 【Layui】调整 Layui 整体样式大小的方法
  • Vue开发的3D全景图效果
  • 微服务的好与坏
  • Spring Boot 常用注解及其功能详解
  • 【LLM实战|langchain、qwen_agent】RAG高级