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

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.xdnf.cn/news/611497.html

相关文章:

  • 利用chat搜索需求相关视频链接
  • 45道工程模块化高频题整理(附答案背诵版)
  • `ol/proj`简介
  • 在日本,书法也是美术
  • WebSphere Application Server(WAS)8.5.5教程第十二讲:EJB
  • Zephyr OS 使能和失能蓝牙协议栈的操作
  • [linux] git强行拉取并覆盖
  • VR全景制作方法都有哪些?需要注意什么?
  • IT | 词汇科普手册Ⅱ
  • Leetcode 3313. 查找树中最后标记的节点
  • FreeGPT+内网穿透外网远程连接使用,搞定ChatGPT访问难题!
  • LPRNet实现车牌识别并完成ONNX和TensorRT推理
  • 怎么判断一个Android APP使用了Electron 这个跨端框架
  • 【动态规划】5 从一次函数出发推导斜率优化dp
  • VS Code-i18n Ally国际化插件 配置百度翻译
  • 【北京盈达科技】GEO优化中的多模态了解
  • 基于 Spring Boot + Vue 的墙绘产品展示交易平台设计与实现【含源码+文档】
  • MySQL备份工具:XtraBackup
  • Vue3 + Element Plus 中修改表格当前选中行的颜色
  • Linux——网络基础概念
  • multipart/form-data
  • 光伏电站及时巡检:守护清洁能源的“生命线”
  • 图解深度学习 - 深度学习的工作原理
  • PostgreSQL中的权限管理简介
  • 【49. 字母异位词分组】
  • 各类Agent技术的发展现状和核心痛点
  • 【实测案例】碳纤维复合材料成型过程温度及应变变化监测
  • Docker部署OpenSearch集群
  • git初始化及操作指南
  • 4408. 李白打酒加强版(dp)