【双指针】141. 环形链表(三种方法:单指针,双指针,集合哈希)

【环形链表】 判断环形? 返回入环节点? 两种问题具体思路,文中包含多种解法(附完整代码) 本文将介绍两种环形链表的问题——判断环形链表 和 返回入环节点对于这两个问题,都将各自介绍两种不同的思路方法。【暴力法】【双指针】【哈希遍历】【快慢指针】 阅读详情

【题目】
给定一个链表,判断链表中是否有环。
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。
如果链表中存在环,则返回 true 。 否则,返回 false 。
【进阶】
你能用 O(1)(即,常量)内存解决此问题吗?
【示例 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 或者链表中的一个 有效索引 。
【代码】
【Python】
【方法1:普通版本】
在这里插入图片描述

class Solution:
    def hasCycle(self, head: ListNode) -> bool:
        s=set()
        while head not in s and head:
            s.add(head)
            head=head.next
        return head

【方法2:进阶版】
在这里插入图片描述

class Solution:
    def hasCycle(self, head: ListNode) -> bool:
        cnt=0
        while head:
            head=head.next
            cnt+=1
            if cnt>10**4:
                return True
        return False

【方法3:高级进阶-快慢指针】

class Solution:
    def hasCycle(self, head: ListNode) -> bool:
        if not head:
            return False
        slow,fast=head,head.next
        while slow!=fast and slow and fast:
            fast=fast.next
            if fast:
                fast=fast.next
            slow=slow.next
        if slow is None or fast is None:
            return False
        return True
LeetCode 经典题号-题号 + 题型 + 一句话解法模板 阅读详情

相关推荐

Keil MDK v6迁移指南:从AC5到AC6的编译器升级与工程适配

编译器是嵌入式开发的底层基石,决定了代码的执行效率与工程的可维护性。随着ARM工具链向LLVM/Clang架构演进,Arm Compiler 6(AC6)正逐步取代经典的AC5,成为Keil MDK的核心编译引擎。AC6在C11标准支持、代码优化、诊断信息及LTO链接优化上全面超越AC5,但迁移过程中往往伴随内联汇编重写、类型检查严格化、库兼容性等问题。理解编译器差异、掌握CMSIS-Toolbox的工程描述机制,能帮助嵌入式工程师在Cortex-M系列项目中平滑过渡。本文结合Cortex-M4量产工程实战

weixin_29189363的博客 241

判断环形链表

环形链表判断的3种解法

weixin_51648153的博客 1416

Vanna 2.0:基于LLM的智能文本到SQL框架,实现企业级数据查询与权限控制

文本到SQL技术是自然语言处理与数据库交互的重要桥梁,它允许用户使用日常语言直接查询数据库,无需编写复杂的SQL语句。其核心原理是利用大语言模型理解用户意图,并结合检索增强生成技术,将自然语言问题转换为准确的结构化查询语言。这项技术的价值在于大幅降低了数据访问门槛,提升了业务人员的数据自助分析能力,并能在金融分析、销售报表、运营监控等场景中实现实时数据洞察。Vanna 2.0作为一个开源框架,通过引入用户感知的智能体架构和行级安全策略,解决了企业级应用中的多租户数据隔离与权限控制等关键问题,使得自然语言数据

weixin_42629522的博客 546

环形链表

给定一个链表,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 如果链表中存在环,则返回 true 。 否则,返回 false 。 进阶: 你能用 O(1)(即,常量)内存解决此问题吗? 示例 1: 输入:head = [3..

a707931675的博客 370

sas协议(SAS PL-3)之Zoning功能

1 Zoning overview SAS zoning is implemented by a set of zoning expander devices with zoning enabled that define a zoned portion of a service delivery subsystem (ZPSDS)服务子系统. The zoning expander devices control whether a phy is permitted to participate in

sinat_37817094的博客 1534

深度学习特征融合(feature fusion)操作详解

特征融合是指在深度神经网络中,将来自不同来源(如不同网络分支、不同模态、不同时间步、不同空间尺度或不同抽象层级)的特征表示进行有策略地整合,以生成更具判别性、鲁棒性和语义丰富性的联合特征表示。其核心目标是最大化信息互补性,最小化信息冗余与噪声干扰。关键问题:如何“有效”融合?——这取决于任务需求、数据特性、计算资源和融合机制的设计。✅ 是否对齐了空间/通道/模态?✅ 融合方式是否与任务匹配?(检测需定位+语义 → 多尺度融合)✅ 是否引入可学习机制提升适应性?✅ 是否控制了计算开销?

浩瀚之水的专栏 793

python实现链表的删除_用动画来看Python如何实现链表的逆序(一)

用动画来看Python如何实现链表的逆序(一)[1]1 创建链表2 逆序算法主体3 程序主体4 算法性能分析1 创建链表class LNode: def __init__(self): self.data = None self.next = None2 逆序算法主体def Reverse(head): """ :function: 对带头单...

weixin_39672443的博客 304

基于深度学习YOLOv5的草莓成熟度检测系统详解(深度学习模型+UI界面+Python代码+训练数据集)

数据采集与预处理模块:负责收集草莓图像,并进行数据增强和标注。深度学习模型训练模块:使用YOLOv5模型进行草莓成熟度检测模型的训练。模型推理模块:加载训练好的模型,对输入图像或视频进行草莓成熟度检测。UI界面模块:提供用户交互界面,方便用户上传图像或视频进行成熟度检测。本文详细介绍了基于YOLOv5的草莓成熟度检测系统的构建过程,包括数据集的构建、模型的训练与推理、以及UI界面的设计。通过本文的指导,读者可以快速搭建一个高效的草莓成熟度检测系统,并应用于实际场景中。

斌擎科技 526

判断一条链表是否是环形链表的两种方法

环形链表的示意图如下 我们假设定义的单链表如下 struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; 方法一:哈希表法 这里我们采用set这一关联容器。设置set的下标为ListNode*,遍历该链表的每一个结点,将未出现过的链表结点存储至set中...

CoderJiang 4594

2024 年 9 月青少年软编等考 C 语言三级真题解析

2024 年 9 月青少年软编等考 C 语言三级真题解析。

发布少儿编程考级的真题和优秀竞赛题解析,以及一些讲义。 1742

从0到1构建数据分析AI Agent:数据采集、洞察生成与报告自动化

在企业数字化转型的今天,数据分析师80%的时间被消耗在重复取数、数据清洗、报表排版等低价值劳动上,真正用于深度业务洞察和决策支持的时间不足20%。本文将从核心概念、技术原理、代码实现、落地实践全维度,教你从0到1搭建一套完整的数据分析AI Agent系统,实现「用户用自然语言提需求→Agent自动采集多源数据→AI自动挖掘业务洞察→自动生成符合业务要求的多格式报告」的全链路自动化,平均可将需求响应速度从天级压缩到分钟级,释放70%以上的分析师人力成本。

AI Python 编程之道的博客 473

hot100 环形链表(141)

本题采用双指针算法(又称“Floyd 判圈算法”或“快慢指针法”)解决单链表是否存在环路的判定问题。其核心本质是利用两个步长不同的指针在同向拓扑结构中移动,通过速度差在有限步数内产生追及相遇,从而将环路拓扑结构的检测转化为相对运动的数学收敛问题。当前提供的源码实现了在时间复杂度 O(N) 和额外空间复杂度 O(1) 条件下的全局最优线性检索,最终走向是精准判定单链表内部是否存在闭环。

2603_96126046的博客 370

【多目标跟踪】ByteTrack复现(有yolov5例子)

1.环境 ubuntu16.04 cuda10.1 cudnn7 python3.6 Cython matplotlib>=3.2.2 numpy>=1.18.5 opencv-python>=4.1.2 Pillow PyYAML>=5.3 scipy>=1.4.1 tensorboard>=2.2 torch>=1.7.0 torchvision>=0.8.1 tqdm>=4.41.0 seaborn>=0.11.0 easydic

聿默的博客 1万+

二分查找、数组交集与环形链表:算法面试三大高频题型解析

二分查找作为O(logN)时间复杂度的经典算法,通过分治策略快速定位目标值,是处理有序数据集的核心技术。双指针技巧在数组交集等问题中展现高效的去重与遍历能力,而快慢指针法则为环形链表检测提供了空间最优解。这些基础算法不仅是大厂面试的高频考点,更可组合应用于实际工程场景,如美团2023校招笔试中的场次安排问题就融合了二分与双指针思想。掌握这些算法的工业级实现与边界处理,能有效提升代码健壮性,其中防溢出计算、哈希去重优化等技巧尤为关键。

weixin_34248487的博客 358

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

LeetCode双指针专题

快慢指针,左右指针,两个序列各自指针;数组/字符串/链表专题

likeyi_lky的博客 356

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

LeetCode刷题记录

leetcode刷题记录~

hamimimigua的博客 198

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Prepare50

遍历一次,建一个value为dict,key为下标的dict,每次去里面判断下,要找的数是否存在,时间复杂度O(n),空间负责度O(n)。

liuhe2296044的博客 940

经典链表问题——判断链表是否带环

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

fight_for1的博客 1664

环形链表的判断方法与原理证明

不妨推导一下:

2303_81216104的博客 1983

如何判断链表有环(三种方法)

方法一、穷举遍历 方法一:首先从头节点开始,依次遍历单链表的每一个节点。每遍历到一个新节点,就从头节点重新遍历 新节点之前的所有节点,用新节点ID和此节点之前所有节点ID依次作比较。如果发现新节点之前的所有节 点当中存在相同节点ID,则说明该节点被遍历过两次,链表有环;如果之前的所有节点当中不存在相同的 节点,就继续遍历下一个新节点,继续重复刚才的操作。 例如这样的链表:A->B->...

WangY.H 1万+

判断环形链表及寻找入环口问题详解

链表在面试和比始终都是十分常见的问题。本篇文章会简述到判断环形链表和返回环形链表的入环点。其中有较多的细节,本篇文章会详细解释。上述的问题在面试中很常见,问怎么看是否有环,为什么快指针每次走两步,慢指针走一步可以?快指针一次走3步,走4步,...n步行吗?还有一个就是找入环点的位置。希望本编文章会对你有所帮助,可以很好的解决这些问题。一定要搞清楚细节问题,不要只记结论,否则会吃大亏。

weixin_67596609的博客 1561

【算法】如何判断链表有环

如何判断单链表是否存在环 有一个单向链表,链表当中有可能出现“环”,就像题图这样。如何用程序判断出这个链表是有环链表? 不允许修改链表结构。 时间复杂度O(n),空间复杂度O(1)。 方法一、穷举遍历方法一:首先从头节点开始,依次遍历单链表的每一个节点。每遍历到一个新节点,就从头节点重新遍历新节点之前的所有节点,用新节点ID和此节点之前所有节点ID依次作比较。如果发现新

Mlib 8万+

判断链表有环——双指针法

一、题目 二、方案 1、Hash表 我们可以通过检查一个结点此前是否被访问过来判断链表是否为环形链表。常用的方法是使用哈希表。 我们遍历所有结点并在哈希表中存储每个结点的引用(或内存地址)。如果当前结点为空结点 null(即已检测到链表尾部的下一个结点),那么我们已经遍历完整个链表,并且该链表不是环形链表。如果当前结点的引用已经存在于哈希表中,那么返回 true(即该链表为环形链表) 2、双指针法 bool hasCycle(ListNode *head) { if(.

sinat_31608641的博客 846

记录 AttributeError: ‘NoneType‘ object has no attribute ‘nextcall‘

记录一次错误 AttributeError: 'NoneType' object has no attribute 'nextcall'

superwang04的博客 1573

判断链表是否为环形链表

判断链表是否为环形链表

2302_80190394的博客 989

AttributeError: ‘NoneType‘ object has no attribute ‘next‘

想了想,才发现在fast为空的情况下,则没有fast.next。所以应该先判断fast是否为空,将其放在前面。时写个条件句判断当前节点和下一节点是否为空,我一开始是写的如上,但一直报错,百思不得其解。

weixin_52024290的博客 449
上一篇: 【双指针-简单】844. 比较含退格的字符串
下一篇: 【双指针-简单】234. 回文链表(栈、翻转后半链表,递归法后期补充)
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值