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

025环形链表

环形链表

题目链接:https://leetcode.cn/problems/linked-list-cycle/description/?envType=study-plan-v2&envId=top-100-liked

我的解答:

public boolean hasCycle(ListNode head) { ListNode fast=head, slow=head; while(fast!=null&&fast.next!=null){ fast=fast.next.next; slow=slow.next; if(fast==slow){ return true; } } return false; }

分析:代码的时间复杂度为O(n),空间复杂度为O(1)。解题思路:快指针和慢指针都从链表起点出发,快指针一次走两步,慢指针一次走一步,若快指针与慢指针能相遇,则链表存在环。

看了官方题解后的解答:

//方法一:哈希表 //时间复杂度:O(n) //空间复杂度:O(n) public boolean hasCycle(ListNode head) { Set<ListNode> set = new HashSet<>(); ListNode cur=head; while(cur!=null){ if(!set.add(cur)){ return true; } cur=cur.next; } return false; } //方法二:快慢指针 //时间复杂度:O(n) //空间复杂度:O(1) public boolean hasCycle(ListNode head) { if(head==null||head.next==null){ return false; } ListNode slow=head, fast=head.next; while(fast!=slow){ if(fast==null||fast.next==null){ return false; } slow=slow.next; fast=fast.next.next; } return true; }

分析:

​ 1、方法一采用哈希表,每次访问到一个元素就看哈希表中是否已经存在,若存在就有环,若不存在就放入哈希表。

​ 2、方法二采用快慢指针,基本原理是Floyd 判圈算法(又称龟兔赛跑算法),快指针一次走两步,慢指针一次走一步,若链表存在环则快慢指针终会相遇(在进入环后,每次移动快指针与慢指针的距离减一)。

​ 3、我的解题思路与官方题解的方法二思路一致,只是实现过程略有不同,官方题解的循环判断条件是快慢指针是否指向同一个位置,所以假设了在head前还存在一个虚拟节点,一开始慢指针从虚拟节点移动一步到head,快指针从虚拟节点移动两步到head.next。而我的思路是在循环内判断快慢指针是否相遇。

总结

  • 本题主要需要了解Floyd 判圈算法(又称龟兔赛跑算法)的思想。若存在环,快指针与慢指针在环中移动之后每次距离都会减少一,快指针总会追上慢指针。
http://www.jsqmd.com/news/782748/

相关文章:

  • 【Python专项】进阶语法-系统资源监控与数据采集(1)
  • 开发者专属:用coding-plan打造高效技术学习与自律管理系统
  • 纳米工艺IC测试挑战与BIST技术创新
  • 子弹型制冰机实力厂家揭秘:核心技术强、产能稳定的生产商推荐 - 品牌推荐大师
  • 如何用500KB开源工具彻底替代AWCC:AlienFX Tools终极控制指南
  • CANN驱动获取设备板ID
  • 2026年十大AI音乐软件推荐:国际标杆领衔,蘑兔AI紧随其后
  • CANN/pyasc按位或运算API
  • Kubernetes网络模型深度解析与实践
  • CANN/ge函数处理点API
  • 如何用纯C语言将网易云NCM加密音乐转换为通用MP3格式:完整技术解析与操作指南
  • 2026年一千京东卡回收多少钱,最新折扣率表 - 猎卡回收公众号
  • 【官方首发】亨得利高端腕表服务最新公告:2026年全国售后服务网络优化升级官方解读(附统一服务标准全国网点预约通道防伪指南) - 亨得利腕表维修中心
  • Gemma-4模型在NPU上推理
  • CANN/metadef算子平铺构建
  • 如何用Sunshine搭建个人游戏串流服务器:跨设备畅玩3A大作的完整指南
  • 浅谈GaussDB (DWS)技术【玩转PB级数仓GaussDB(DWS)】
  • 2026年不干胶标签与办公用纸一站式采购完全指南 - 优质企业观察收录
  • PotPlayer字幕翻译插件深度解析:打破语言壁垒的专业解决方案
  • 根脉——溯源
  • B站视频转文字终极指南:如何用AI技术快速提取视频内容并生成文字稿
  • PotPlayer字幕翻译插件架构解析:百度翻译API集成与性能优化指南
  • InsMatrixAutomation 日志系统设计深度解析:从 Loguru 到企业级日志实践
  • CANN Alpamayo-R1智驾优化
  • 2026法治教育展厅怎么做?未成年法治教育展厅展馆设计 - 新闻快传
  • 微信立减金闲置率近五成,教你合规盘活你的支付权益 - 团团收购物卡回收
  • CANN算子库GeGluV3算子
  • Kubernetes存储深度解析与实践
  • nvm安装node的目录
  • 职场人的「深夜困境」:为什么我选择用AI社交平台倾诉