【C】leetcode力扣—— 141. 环形链表Ⅰ

目录

  • 141. 环形链表 Ⅰ
  • 题目
  • 解题思路分析
    • 暴力求解??
    • 快慢指针
  • 代码

141. 环形链表 Ⅰ

题目链接: https://leetcode.cn/problems/linked-list-cycle/description/

题目

题目

  • 给你一个链表的头节点 head ,判断链表中是否有环。

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

  • 如果链表中存在环 ,则返回 true 。 否则,返回 false

示例 1:
在这里插入图片描述
输入:head = [3,2,0,-4], pos = 1
输出:true
解释:链表中有一个环,其尾部连接到第二个节点。
示例 2:
在这里插入图片描述
输入:head = [1,2], pos = 0
输出:true
解释:链表中有一个环,其尾部连接到第一个节点。
示例 3:
在这里插入图片描述
输入:head = [1], pos = -1
输出:false
解释:链表中没有环。

提示:

  • 链表中节点的数目范围是 [0, 104]
  • -105<= Node.val <= 105
  • pos -1 或者链表中的一个 有效索引 。

进阶:你能用 O(1)(即,常量)内存解决此问题吗?

解题思路分析

根据题目,我们获得的信息为:

  • 链表中不一定有环
  • 尾部节点会链接到链表中任意一个节点(有可能尾节点指向他自己)

我们的问题是如何判断一个链表是否带环

暴力求解??

如果链表不带环那么链表的尾节点的next一定为NULL所以用循环判断

struct ListNode* cur=head;
while(cur)
{if(cur->next==NULL){//为 NULL,不带环//直接返回falsereturn false;}cur=cur->next;
}

单链表最后一个节点指向空,所以最后cur->nextNULL,则会返回false

但是如果有环这个代码就会成为一个死循环,while永远不会停下来
所以当这个链表有环时如何判断

快慢指针

我们让慢指针(slow)一次走一步,快指针(fast)一次走两步。
在这里插入图片描述

slow走到中间位置时,fast就会走到环的入口位置
在这里插入图片描述
slow走到环的入口位置时,fast在环中的某个位置。
这时两个指针都进入环中,并且fast的步长是slow的二倍

这时问题变成了数学中的追击相遇问题。
我们假设fastslow的距离为N(取劣弧)每一次距离都会减少(fast步长)-(slow步长)本题为1,也就是距离N每一次都会减1
N的取值=(N,N-1,N-2,N-3,N-4, ... ,4,3,2,1,0)N=0的时候两个指针相遇。
所以两个指针会在环中的一个位置相遇。

代码

bool hasCycle(struct ListNode *head) {struct ListNode* slow=head;struct ListNode* fast=head;while(fast&&fast->next){slow=slow->next;//一步fast=fast->next->next;//两步if(slow==fast)//相遇return true;}//退出循环说明fast或者fast->next 为NULL 有尾节点 无环return false;
}

※ 如果文章对你有帮助的话,可以点赞收藏!!谢谢支持

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【基于HTML5的网页设计及应用】——二级级联菜单

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

两分钟1200帧的长视频生成器StreamingT2V来了,代码将开源

两分钟1200帧的长视频生成器StreamingT2V来了&#xff0c;代码将开源 广阔的战场&#xff0c;风暴兵在奔跑…… prompt&#xff1a;Wide shot of battlefield, stormtroopers running… 这段长达 1200 帧的 2 分钟视频来自一个文生视频&#xff08;text-to-video&#xff09…

25.死锁

一个线程如果需要同时获取多把锁&#xff0c;就容易产生死锁。 t1线程获得A对象锁&#xff0c;接下来想获取B对象的锁。 t2线程获得B对象锁&#xff0c;接下来想获取A对象的锁。 /*** 死锁demo* param args*/public static void main(String[] args) {Object a new Object(…

Go的数据结构与实现【LRU Cache】

介绍 在本文中&#xff0c;我们将用Go实现LRU Cache。 LRU Cache 最近最少使用&#xff08;LRU&#xff09;是一种缓存逐出算法&#xff0c;它按使用顺序组织元素。在LRU中&#xff0c;最长时间没有被使用的元素会被从缓存中逐出。 例如&#xff0c;如果我们有一个容量为三…

蓝牙耳机哪个品牌的好用?五款热销机型推荐,新手入门必备!

​真无线蓝牙耳机近年来非常流行&#xff0c;它们不仅小巧便携&#xff0c;而且在佩戴舒适度和音质方面也逐步超越了有线耳机。面对市场上众多的真无线蓝牙耳机&#xff0c;选择合适的款式可能会令人困惑。我将为你推荐几款既舒适又性能表现不错的蓝牙耳机&#xff0c;希望能帮…

【学习】成为优秀的软件测试工程师需要学哪些知识

成为软件测试工程师&#xff0c;需要学习的内容非常的多&#xff0c;但是无非是这几大类&#xff0c;今天就和小编一起来看看这些知识&#xff0c;你是否都已经掌握。 01、测试环境的搭建 本部分主要是学习从操作系统开始&#xff0c;有关的计算机基础知识、软件和硬件知识、…

【java】关于String、StringBuffer和StringBuilder的那些事

在之前的文章中我们曾简单介绍过String这个引用类型变量&#xff0c;其实它还有许多特性&#xff0c;还有StringBuffer和StringBuilder这两个方法在字符串操作中也有非常重要的地位&#xff0c;接下来就由小编带大家梳理一下吧&#x1f44a; 目录 一、String 1、构造方法 2、…

分库分表 ——12 种分片算法

目录 前言 分片策略 标准分片策略 行表达式分片策略 复合分片策略 Hint分片策略 不分片策略 分片算法 准备工作 自动分片算法 1、MOD 2、HASH_MOD 3、VOLUME_RANGE 4、BOUNDARY_RANGE 5、AUTO_INTERVAL 标准分片算法 6、INLINE 7、INTERVAL COSID 类型算法 …

网络加速器数据可视化大屏:极速网络新体验从这里开始

在信息爆炸的时代&#xff0c;网络已经成为我们日常生活和工作中不可或缺的一部分。然而&#xff0c;网络速度慢、不稳定等问题时常困扰着我们&#xff0c;让许多重要的工作和学习进度受到严重影响。 网络加速器数据可视化大屏集数据分析、可视化展示于一体&#xff0c;它不仅能…

docker--部署 (超详版) (五)

环境准备&#xff1a;docker&#xff0c;mysql&#xff0c;redis&#xff0c;镜像&#xff0c;nginx 把虚拟机打开&#xff0c;连接xshell&#xff0c;参考博客&#xff1a; https://blog.csdn.net/m0_74229802/article/details/136965820?spm1001.2014.3001.5501 一&#x…

GoogLeNet

文章目录 Inception块GoogLeNet模型 Inception块 在GoogLeNet中&#xff0c;基本的卷积块被称为Inception块,如下图所示&#xff1a; Inception块由四条并行路径组成。 前三条路径使用窗口大小为1x1,3x3和 5x5的卷积&#xff0c;从不同空间大小中提取信息。中间的两条路径在输…

SambaNova 芯片:深入解析其架构和高性能秘诀

SambaNova——一家总部位于帕洛阿尔托的公司已经筹集了超过10亿美元的风险投资&#xff0c;不会直接向公司出售芯片。相反&#xff0c;它出售其定制技术堆栈的访问权限&#xff0c;该堆栈具有专门为运行最大的人工智能模型而设计的专有硬件和软件。 最近&#xff0c;SambaNova…