leetcode题解:第142题Linked List Cycle II

MATLAB/Simulink与ThingSpeak集成:打通物联网数据与工业算法仿真的闭环 在工业算法开发与控制系统设计中,模型仿真与真实世界数据的脱节是常见的工程挑战。其核心原理在于构建一个双向数据流闭环,将虚拟的仿真模型与物理世界的传感器网络连接起来。这一技术方案的核心价值在于大幅缩短算法迭代周期,实现数据驱动的设计与验证。典型的应用场景包括数字孪生构建、预测性维护和硬件在环(HIL)测试的云端化。通过将MATLAB/Simulink这一强大的模型化设计环境,与ThingSpeak物联网云平台进行深度集成,工程师能够轻松地将实时或历史的物联网数据流直接注入仿真模型作为输入,同时将仿真结果实时回 阅读详情

https://leetcode-cn.com/problems/linked-list-cycle-ii/

分析

这道题在第141题环形链表的基础上,不仅要求判断链表是否有环,还要求在有环的情况下给出入环的节点。如果用哈希表的话,自然与第141题解法相同,但那并不是这种题目的本意。单纯用双指针,只能判断是否有环,但快慢指针的相遇点并不一定在入环处,需要巧妙地改进双指针的解法来完成本题。

解法、双指针

链表无环时自不必说,当链表有环时,我们分两个阶段来解决这个问题:
阶段1:寻找相遇点
假设链表长a+b,环外长度a,环内长度b。

  1. fast走过的步数始终是slow的2倍,因此f = 2s
  2. 当fast与slow相遇时,fast一定比slow多走了n个环的长度,即f = s + nb

由以上得f = 2nb,s = nb
阶段2:寻找入环点
从链表头部出发,slow指针走到入环点所有需要的步数是a + nb,而此时slow已经走了nb步,所以只需再走a步就可以到达入环点。
如何控制slow再走a步?我们再设置一个指针指向链表头部,它与slow同步移动,它们会在走过a步时在入环点相遇。

代码
class Solution {
public:
    ListNode *detectCycle(ListNode *head) {
        ListNode *fast = head, *slow = head;
        ListNode *meet = nullptr;
        while (fast && fast->next) {
            fast = fast->next->next;
            slow = slow->next;
            if (fast == slow) {
                meet = fast;
                break;
            }
        }
        if (!meet) return nullptr;
        while (head != meet) {
            head = head->next;
            meet = meet->next;
        }
        return head;
    }
};
复杂度分析

当链表中无环时,快指针移动 n / 2 n/2 n/2次到达链表尾部,时间复杂度 O ( n ) O(n) O(n);当链表中有环时,阶段1slow指针一般不会走多个环,阶段2slow指针移动a步,所以时间复杂度 O ( n ) O(n) O(n)。空间复杂度 O ( n ) O(n) O(n)。

vue3 - 详细实现用户收货地址识别解析“姓名/手机号/省市区/街道/乡镇村庄“关键字,用户复制粘贴一段含有姓名电话/详细地址的文字文本信息,vue3自动识别拆分并填入到对应表单字段中,详细示例代码 vue3,nuxt3,快递地址读取,收货地址解析、快递地址解析、物流地址解析自动识别,收货地址解析,从发货地址中拆出姓名电话地址,根据粘贴的字符串提取姓名地址,vue3地址信息自动识别,ts,vue3智能识别地址,提取姓名电话地址信息,自动识别出省市区街道姓名手机号等,根据文本自动解析出收货信息,怎么识别文本中的手机号,粘贴板地址识别,地址智能识别,如何识别收货地址中的关键字,粘贴一段文字后,自动识别到姓名/手机号/收货地址,vue3仿淘宝地址智能识别解析实现,省市区街道智能解析,vue3收货地址,识别地址 阅读详情

相关推荐

UE4游戏逆向实战:从HOOK明文包到自定义发包的完整流程(附加密算法解析)

本文详细解析了UE4游戏网络通信的逆向工程完整流程。从定位线程发包点、HOOK拦截明文封包,到逆向分析加密解密算法,最终实现自定义组包与加密发送。文章结合实战案例,为游戏安全研究和技术人员提供了一套清晰、可操作的方法论。

weixin_29009081的博客 1236

LeetCode 142. Linked List Cycle II 题解

本题是链表的经典问题,主要考察对链表操作和双指针技巧的理解和应用。通过使用快慢指针,我们可以不仅检测链表中是否存在环,还可以找到环的入口。双指针的核心思想是:通过让快指针以两倍的速度移动,当链表中存在环时,快指针最终会追上慢指针。然后将其中一个指针重置到链表头部,以相同的速度移动两个指针,它们再次相遇的点就是环的入口。这种方法不仅适用于环形链表 II 问题,还可以应用于许多其他链表相关的问题,例如相交链表、链表中点查找等。掌握双指针技巧,对于解决链表问题非常重要。

cannonjinx的博客 4108

Ubuntu 20.04 LTS下5分钟搞定ONLYOFFICE协作空间社区版(Docker版保姆级教程)

本文提供了一份在Ubuntu 20.04 LTS系统上,通过Docker快速部署ONLYOFFICE协作空间社区版的保姆级教程。内容涵盖从系统准备、Docker环境搭建,到执行自动化安装脚本、完成Web初始化的全流程,并详细说明了部署后的安全配置、数据备份及基本运维要点,帮助用户高效构建私有、安全、可控的团队文档协作平台。

weixin_28826961的博客 261

(Leetcode 142)Linked List Cycle (II) (快慢指针详解)

Leetcode141题和142题很相似,都涉及到了快慢指针的算法。快慢指针就是设置两个指针,一个快指针,一个慢指针来达到解题的目的。下面分为以下几个模块来讲解: 解第141题解第142题为什么快指针一定要设置为慢指针的2倍快慢指针的拓展应用 一、Leetcode 141题 题目为:Linked List Cycle Given a linked list, determi

willduan的博客 1万+

实体对齐(Entity Alignment)相关论文与数据集整理

实体对齐(Entity Alignment)、知识图谱融合方法总结整理 年份 模型 主要思想 博文推荐 论文 代码 2019 Entity Alignment between Knowledge Graphs Using Attribute Embeddings 实体对齐数据集整理 名称 — DBpe-dia(DBP) LinkedGeoData(LGD) Geonames(GEO) YAGO ...

bjxxkjdxcdd的博客 1万+

UG NX二次开发基础篇-外部模式与DLL内部模式(二 DLL内部模式)

通常情况下,我们希望我们的外挂,在UG启动的时候,就自动加载我们的外挂,并以菜单和工具条的方式,显示在UG上面。当然,这也是市面上所有外挂的操作,因为您不可能要求你的用户,以手工加载的方式,去调用你的外挂吧。在上一篇中,有粉丝留言说,启动 bat 文件,启动EXE外挂,会提示无法找到DLL的错误,这是因为UG的环境变量设置有问题,这里,我们把BAT文件作一个修改,直接改为实际目录。EXE外部模式,还有很多部分需要添加的,如参数的传递、输出消息的显示、UG操作的消息显示,等等。Dll执行结束后,会调用。

u014657217的博客 1653

Leetcode142. Linked List Cycle II

判断链表是否有环,并把环的入口点找到

magic_jiayu的博客 344

深入理解Android音视频同步机制(三)NuPlayer的avsync逻辑

本文深入介绍了NuPlayer的avsync逻辑和原理

张晖的专栏 1万+

Day04: LeetCode. Linked List: 24, 19, 160, 142

Day04: LeetCode. Linked List: 24, 19, 160, 142

dan_dan_burger的博客 1914

二维矩形件排样算法之最低水平线算法实现

最低水平线算法的简单实现(Python) 1、二维矩形排样算法众多,最早的有BL算法、下台阶算法、最低水平线算法等,其中最低水平线算法及其优化算法应用较多,是与智能优化算法(遗传算法、模拟退火算法等)结合的最多的算法,本文利用python对最低水平线算法做了实现...

峰爸的博客 1万+

基于matlab的阈值分割的车牌定位识别系统

车牌自动识别模块是现代社会智能交通系统(ITS)的重要组成部分,是图像处理和模式识别技术研究的热点,具有非常广泛的应用。车牌识别主要包括以下三个主要步骤:车牌区域定位、车牌字符分割、车牌字符识别。本案例通过对采集的车牌图像进行灰度变换、边缘检测、腐蚀及平滑等过程进行车牌图像预处理,并由此得到一种基于车牌颜色纹理特征的车牌定位方法,最终实现了车牌区域定位。车牌字符分割是为了方便后续对车牌字符进行匹配,从而对车牌进行识别。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 968

Leetcode 142 Linked List Cycle II

Leetcode 142 Linked List Cycle II Given a linked list, return the node where the cycle begins. If there is no cycle, return null. To represent a cycle in the given linked list, we use an integer pos w...

博学 笃志 切问 近思 267

黑猫带你学UFS协议第17篇:UFS安全模式详解(Secure Mode)

本文详细介绍了UFS协议中的安全模式,包括Erase, Discard, Purge和Wipe Device操作。Erase用于永久删除数据并确保无法恢复;Discard不保证数据清除;Purge类似于Sanitize,清除内部未映射的物理块数据;Wipe Device则是格式化设备。这些操作涉及逻辑单元、擦除单位、相关寄存器配置等,确保数据安全。" 126036669,12409270,MySQL 8.0 开窗函数详解,"['数据库理论', 'SQL']

黑猫奥利奥的博客 2559

NYUer | LeetCode142 Linked List Cycle II

NYUer | LeetCode142 Linked List Cycle II

Moses_SU的博客 244

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

LeetCode 142 Linked List Cycle II 题解

LeetCode 142 Linked List Cycle II题意思路代码 题意 判断给出的链表中是否包含环,如果有的话返回环的起始点,否则返回null。如下环起始位置为c a->b->c->d ↑ ↓ f<-e 思路 双指针一个一次一步,一个一次两步可以进入环中,但问题在于如何找到环的起始位置,下面是从讨论版找到的图,可以参考一下: 代码...

EricJeffrey的博客 294

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

LeetCode //C - 142. Linked List Cycle II

【代码】LeetCode //C - 142. Linked List Cycle II。

Made in Code 1029

LeetCode 142 — Linked List Cycle II(C++ Java Python)

题目:http://oj.leetcode.com/problems/linked-list-cycle-ii/ Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Follow up: Can you solve it without using ex

龙之梦 3072

LeetCode 142. 环形链表 II(Linked List Cycle II)

易错点说明忘记判空 fast 或 fast.next可能导致访问空指针错误相遇后直接返回 slow要重新设置 head 与 slow 同时移动比较节点时用值而非引用比较应比较节点对象本身,而非 val 值快慢指针(Floyd判圈算法)不仅能判断有无环,还能找出环入口。核心推导公式,理解本质,掌握做题模板。

2501_91641025的博客 932

LeetCode 142 环形链表 II Linked List Cycle II Python

链表定义 # Definition for singly-linked list. class ListNode: def __init__(self, x): self.val = x self.next = None 142. 环形链表 II Linked List Cycle II LeetCodeCN 第142题链接 第一种方法还是上面的用哈希表s...

fongim的博客 404

Leetcode 142 Linked List Cycle Ⅱ

**Leetcode 142 Linked List Cycle Ⅱ 题目描述 Given a linked list, return the node where the cycle begins. If there is no cycle, return null. To represent a cycle in the given linked list, we use an integer...

qq_43271202的博客 212

LeetCode 142. Linked List Cycle II(环形链表II) -- c语言

142. Linked List Cycle II Given a linked list, return the node where the cycle begins. If there is no cycle, return null. To represent a cycle in the given linked list, we use an integer pos which rep...

d_benhua的博客 427

Leetcode 142. Linked List Cycle II(python+cpp)

Leetcode 142. Linked List Cycle II题目解析解法1:利用set解法2:Floyd's Tortoise and Hare 题目 Given a linked list, return the node where the cycle begins. If there is no cycle, return null.To represent a cycle in t...

qq_37821701的博客 502

LeetCode 142 Linked List Cycle II

142 Linked List Cycle II https://leetcode.com/problems/linked-list-cycle-ii/ Given a linked list, return the node where the cycle begins. If there is no cycle, return null. There is a cycle in a linked list if there is some node in the list that can be rea

cyberickk blog 221

LeetCode 142. Linked List Cycle II

LeetCode 142. Linked List Cycle II 142.Linked List Cycle II Given a linked list, return the node where the cycle begins. If there is no cycle, returnnull. To represe...

豆子 155

[LeetCode][142] Linked List Cycle II

[LeetCode][142] Linked List Cycle II lower 和faster 如果有重合就说明有环 当有环时候 头节点到入口点为L1 入口点到会合点是L2 循环长度为c 第一次快慢指针相遇是进行了n轮的循环 lower长度是L1+L2 faster长度是L1+L2+nc 由此第二次遇到后可以求出c 因为faster每次走两步 lower每次走一步 因此 (L1+L2 )2=...

OCEANtroye的博客 253
上一篇: leetcode题解:第139题Word Break
下一篇: Partition算法详解
chenf99
博客等级 码龄10年 44粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值