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

leetcode-快慢指针系列

开胃小菜

141. 环形链表

给你一个链表的头节点 head ,判断链表中是否有环。
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。
如果链表中存在环 ,则返回 true 。 否则,返回 false 。
在这里插入图片描述

  1. 快慢指针只要进入环中,就一定会在环中打转,很直观哈
  2. 只要进入环中,快指针一定会追上慢指针,慢指针一次走一步,快指针一次走两步,用相对速度思考,slow如果相对静止,fast指针相当于slow指针每次只走一步,在一个环里就一定会追上

问:兔子会不会「跳过」乌龟,从来不会和乌龟相遇呢?
答:这是不可能的。如果有环的话,那么兔子和乌龟都会进入环中。这时用「相对速度」思考,乌龟不动,兔子相对乌龟每次只走一步,这样就可以看出兔子一定会和乌龟相遇了。

class Solution:def hasCycle(self, head: Optional[ListNode]) -> bool:slow = headfast = headwhile fast and fast.next:slow = slow.next # slow走一步fast = fast.next.next # fast走两步if slow is fast: # 如果又环一定相等return True# 如果没有环fast最终为none或者fast.next为nonereturn False

不需要判断slow是否为none,因为如果没有环,fast一定比slow更快走到末尾变成none.。

142. 环形链表 II

核心点就是当快慢指针相遇的时候,快指针的距离是慢指针的两倍。慢指针走了n个结点,快指针走了2n个结点。

http://www.lryc.cn/news/2384741.html

相关文章:

  • JAVA05基本数据类型和包装类的转换,转换成其他数据类型,包装类与字符串的转换+学生类的定义实例
  • Python打卡训练营学习记录Day34
  • 动手学习深度学习V1.1 chapter2 (2.1-2.2)
  • 数据结构(6)线性表-队列
  • NumPy 2.x 完全指南【十七】转置操作
  • 【数据架构04】数据湖架构篇
  • 使用OpenSSL生成根证书并自签署证书
  • uniapp-商城-62-后台 商品列表(分类展示商品的布局)
  • 初识C++:模版
  • 【Elasticsearch】给所索引创建多个别名
  • Linux入门(九)任务调度
  • 突破认知边界:神经符号AI的未来与元认知挑战
  • Java 处理地理信息数据[DEM TIF文件数据获取高程]
  • 谈谈对dubbo的广播机制的理解
  • 对接钉钉消息样例:DING消息、机器人
  • 003-类和对象(二)
  • 使用Rancher在CentOS 环境上部署和管理多Kubernetes集群
  • Java常用数据结构底层实现原理及应用场景
  • 利用朴素贝叶斯对UCI 的 mushroom 数据集进行分类
  • Linux火墙管理及优化
  • Visual Studio 制作msi文件环境搭建
  • (Java基础笔记vlog)Java中常见的几种设计模式详解
  • C++ vector 深度解析:从原理到实战的全方位指南
  • 鸿蒙进阶——Framework之Want 隐式匹配机制概述
  • antv/g6 图谱封装配置(二)
  • OpenCV CUDA模块图像过滤------用于创建一个最小值盒式滤波器(Minimum Box Filter)函数createBoxMinFilter()
  • 网络抓包命令tcpdump及分析工具wireshark使用
  • linux strace调式定位系统问题
  • femap许可与云计算集成
  • 车载诊断架构 --- 车载诊断有那些内容(上)