【经典链表OJ】环形链表

news2025/2/24 14:33:43

一、题目要求

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

题目:OJ-环形链表

二、解题思路

  我们可以使用快慢指针来解决此问题:

  1. 定义一个快指针fast,一个慢指针low。这两个指针都指向头节点head。
  2. 开始遍历链表节点。快指针每次走两步,慢指针每次走一步。
  3. 如果链表没有环,则快指针最终会指向链表尾部,返回false。
  4. 如果链表有环,由于快指针每次比慢指针多走一步,快慢指针之间的距离在不断缩短,则快慢指针一定会相遇,此时返回true。

三、代码实现

bool hasCycle(struct ListNode *head)
{
    struct ListNode *low = head;
    struct ListNode *fast = head;
    while(fast && fast->next)
    {
        low = low->next;
        fast = fast->next->next;
        if(low == fast)
            return true;
    }
    return false;
}

四、关于快慢指针步数差值的探讨

  上述解题思路中,快慢指针的步数差值为1,则快慢指针一定会相遇。那么如果它们的差值不为1呢?会不会有永远遇不到的可能性存在呢?

这里假设慢指针一次走一步,快指针一次走三步,它们的差值为2

下图的时刻为,slow指针刚刚进入环,fast指针已经走了x圈。

  • 如果N是偶数,那么fast和slow一定会相遇
  • 如果N是奇数,那么fast会刚好越过slow一个位置,它们之间的距离会变成C - 1

  • 这时需要讨论C - 1的奇偶性:
  • 如果C - 1为偶数,fast和slow一定会相遇,此时C为奇数
  • 如果C - 1为奇数,fast会刚好越过slow一个位置,它们之间的距离会变成C - 1,由于C -  1为奇数,会重新进入该情况,此时它们永远不会相遇,此时C为偶数

总结以上情况:当N为奇数C为偶数时,fast和slow永远不会相遇


现在确定了不会相遇时N和C的关系,只需要找出一个关于N和C的关系式来验证这个关系是否正确,就可以确定在该情况下是否有永远追不上的可能性。

  • slow走过的路程:L
  • fast走过的路程:L + x * C + (C - N) = 3 * L

化简如下:(把上述假设的关系带入),会发现此等式不成立,故假设不成立

  • 2L = (x + 1)C - N     (x为fast走过的完整的圈数)
  • 偶           偶           奇

所以在当slow指针一次走一步,fast指针一次走三步,它们的差值为2的情况下,它们一定会相遇。不存在永不相遇的可能性。

其他的步数差值也可用这种思路来求解,但讨论的情况会相对复杂。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1914404.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

昇思25天学习打卡营第16天|应用实践之Vision Transformer图像分类

基本介绍 今天同样是图像分类任务,也更换了模型,使用的时候计算机视觉版的Transformer,即Vision Transformer,简称ViT。Transformer本是应用于自然语言处理领域的模型,用于处理语言序列,而要将其应用于图像…

百度网盘青春版网页版上线

不知道还有多少小伙伴记得百度网盘曾经出过一个青春版,原因是21年相关部门发布通知《工业和信息化部关于开展信息通信服务感知提升行动的通知》其中就有一条: 明确指出网盘向免费用户提供的上传和下载最低速率应满足基本的下载需求 正所谓上有政策下有对…

常用的设计模式和使用案例汇总

常用的设计模式和使用案例汇总 【一】常用的设计模式介绍【1】设计模式分类【2】软件设计七大原则(OOP原则) 【二】单例模式【1】介绍【2】饿汉式单例【3】懒汉式单例【4】静态内部类单例【5】枚举(懒汉式) 【三】工厂方法模式【1】简单工厂模式&#xf…

AI绘画小白必备!Stable Diffusion常用插件合集,好用推荐!(附插件下载)

前言 宝子们,早上好啊~Stable Diffusion 常用插件,月月已经给大家整理好了,自取就好。 拥有这些SD常用插件,让您的图像生成和编辑过程更加强大、直观、多样化。以下插件集成了一系列增强功能,覆盖从自动补全提示词到…

设置DepthBufferBits和设置DepthStencilFormat的区别

1)设置DepthBufferBits和设置DepthStencilFormat的区别 2)Unity打包exe后,游戏内拉不起Steam的内购 3)Unity 2022以上Profiler.FlushMemoryCounters耗时要怎么关掉 4)用GoodSky资产包如何实现昼夜播发不同音乐功能 这是…

东旭蓝天被控股股东占用78亿:近七年业绩奇差,或面临退市

《港湾商业观察》施子夫 张楠 在7月5日一口气发了超过30份公告后,终于让投资者对于东旭蓝天2023年和今年一季度经营业绩有了更清晰的观察。 与此同时,东旭蓝天(下称)也收到了深交所的关注函。种种不利因素之下,上市…

【竞技宝 】欧洲杯:赛事水货盘点

本届欧洲杯接近尾声,有些球员抓住机会趁势崛起,踢出了身价。可惜还有一些球员的表现无法让球迷和媒体满意,下面我们就来盘点下本届欧洲杯的水货球员,看看哪些人因为糟糕的表现上榜? 格瓦迪奥尔(克罗地亚) 本届欧洲杯是克罗地亚黄金一代球员的谢幕之战,原本格瓦迪奥尔作为球队…

凌凯科技前五大客户依赖症加剧:研发费用率骤降,应收账款大增

《港湾商业观察》黄懿 6月13日,上海凌凯科技股份有限公司(下称“凌凯科技”)在港交所提交上市申请,拟于主板上市,华泰国际为其独家保荐人。 凌凯科技致力于提供小分子化合物技术和产品解决方案,专注于制药…

探索东芝 TCD1304DG 线性图像传感器的功能

主要特性 高灵敏度和低暗电流 TCD1304DG 具有高灵敏度和低暗电流,非常适合需要精确和可靠图像捕捉的应用。传感器包含 3648 个光敏元件,每个元件尺寸为 8 m x 200 m,确保了出色的光灵敏度和分辨率。 电子快门功能 内置的电子快门功能是 T…

【onnx】onnxruntime-gpu无法使用问题

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 onnxruntime-gpu无法使用 1. 正文 CUDA版本:12.1 nvcc -VCUDNN的版本 cat /usr/include/cudnn_version.h |grep CUDNN_MAJOR -A 2说明: 可…

免费的SSL证书能使用吗

SSL证书为网站提供数据安全加密,保护数据传输,提升用户信任。 现在免费的SSL证书还能使用吗?答案是肯定的。个人博客、个人的网站目前使用免费SSL证书的居多,另外一些单位在网站上线前,也会使用免费SSL证书对网站进行…

品牌策划学习资源全攻略:从入门到精通的推荐清单!

这里再分享一些网站书籍和杂志给大家。 TOPYS创意内容平台: 专注于创意内容分享,涵盖广告、设计、艺术等多个领域,是广告设计人寻找创意灵感的好去处。 Dribbble: 设计师社区,用户可以浏览到全球设计师的优秀作品&…

低代码技术革新:高效构建现代人事管理系统

引言 在快速变化的商业环境中,企业必须不断提升其内部管理效率,以保持竞争力和灵活性。人事管理系统作为企业核心业务系统之一,承担着招聘、培训、绩效管理等重要功能,直接影响着企业的人才管理和运营效率。传统的人事管理系统通常…

Vue核心 — Vue2响应式原理和核心源码解析(核心中的核心)

一、前置知识 1、Vue 核心概念 Vue 是什么? Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。 Vue 核心特点是什么? 响应式数据绑定:…

Springboot助农农产品销售系统-计算机毕业设计源码16718

摘要 SpringBoot助农农产品销售系统旨在通过利用SpringBoot框架开发一个便捷高效的农产品销售平台。该系统包括用户注册登录、商品浏览、购物车管理、订单生成、支付功能等模块。通过整合支付接口、地图定位、推荐系统等技术,提供给用户更好的购物体验。本文介绍了…

考完软考之后,如何评职称?是否有有效期?

一、软考和职称之间的关系 软考和职称之间的关系可以这样理解:拿到软考证书并不意味着就能获得职称。软考证书是技术等级证书,而职称则是一种资格。如果单位聘用你做工程师,那么你的软考证书就可以发挥作用,相当于获得了职称证。…

私域运营从0到1冷启动

私域社群的冷启动是一个从无到有的过程,需要策略和耐心来吸引并维护用户。以下是一些步骤和策略,可以帮助你的私域社群实现从0到1的冷启动: 1. **明确目标和定位**: - 确定社群的目标用户和他们的需求。 - 明确社群的主题和…

【全面的LangChain入门指南】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

简过网:工程专业最吃香的6个证书,你考了几个了?

工程专业最吃香的6个证书,你考了几个了?我们一起来看看吧! 1、二级建造师 报考条件:工程类大专及以上学历/从事相关职业 考试时间:3月报名、6月考试 就业前景:建筑设计院、房产开发公司、施工单位 2、一…

叠纸游戏被“偷跑”的一生

已经数不清叠纸是第几次被偷跑了。 刚刚经历了一次大规模拆包偷跑的叠纸,在7月4日,又遭遇了如出一辙的恶性事件,叠纸旗下的乙女游戏《恋与深空》新男主秦彻再次被偷跑,#秦彻偷跑#、#秦彻建模#等多个话题登上热搜。 同时被偷跑的…