Leetcode面试题 02.08. 环路检测

Win11下Android模拟器报HAXM未安装?三步搞定虚拟化配置(附终端命令) 本文详细解析了Win11下Android模拟器HAXM报错的解决方案,从虚拟化配置到终端命令实战。通过检查BIOS设置、调整Windows功能及执行PowerShell命令,三步搞定虚拟化配置问题,有效提升模拟器性能。特别针对Win11与HAXM的兼容性问题提供了专业指导。 阅读详情

Every day a leetcode

题目来源:面试题 02.08. 环路检测

解法1:快慢指针

设置快慢两个指针分别为 fast 和 slow,初始化都指向 head。

slow 每次走一步,fast 每次走两步。

由于 fast 走得更快,如果有环,fast 一定先进入环,slow 后进入环。当两个指针都进入环后,两个指针一定能在环上相遇,这样就能判断是否有环。

如下图所示,当 slow 刚进入环时,fast 早已进入环。因为 fast 每次比 slow 多走一步,且 fast 和 slow 的距离小于环的长度,所以 fast 和 slow 相遇时,slow 所走的距离不超过环的长度。

请添加图片描述

如下图所示,设头结点到环的入口点的距离为 a,环的入口点沿环的方向到相遇点的距离为 x,环长为 r,相遇时 fast 绕了 n 圈。

请添加图片描述

则有:2 * (a + x) = a + n * r + x,即:a = n * r - x。

显然从头结点到环的入口点的距离等于 n 倍的环长减去环的入口点到相遇点的距离。

因此可以设置两个指针,一个指向 head,一个指向相遇点,两个指针同步移动(一次走一步),相遇点即为环的入口点。

代码:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode *detectCycle(struct ListNode *head) {
    if(head == NULL || head->next == NULL) return NULL;
    struct ListNode* slow=head;
    struct ListNode* fast=head;
    while(fast && fast->next)
    {
        slow=slow->next;
        fast=fast->next->next;
        if(slow == fast) break;
    }
    //没有环,返回NULL
    if(fast!=slow) return NULL;
    struct ListNode* p1=head;
    struct ListNode* p2=slow;
    while(p1!=p2)
    {
        p1=p1->next;
        p2=p2->next;
    }
    return p1;
}

结果:

在这里插入图片描述

解法2:hash

详情见官方题解:环路检测:方法一:哈希表

YOLOv8 眼底病变检测(眼底照片)详细说明 本文介绍了基于YOLOv8的眼底病变自动检测系统。该系统可识别糖尿病视网膜病变、青光眼等5类常见眼底病变,包括微动脉瘤、出血点等特征。核心技术包含图像预处理、模型训练、病变检测与量化分析三个模块,采用1024×1024高分辨率输入,针对医学图像特点优化数据增强策略。系统支持批量处理、可视化标注和临床报告生成,提供病变数量、面积密度和严重程度评分等量化指标。特别强调医学合规性要求,需专业医生参与数据标注和模型验证,符合医疗器械认证标准。该系统可作为眼科医生的辅助诊断工具,提高眼底病变筛查效率。 阅读详情

相关推荐

知识图谱初步学习(一)——本体+Protege新手学习

文章目录前言(本体详解)1.本体概念2.本体分类3.本体组成4.本体构建方法一、protege简介二、软件使用步骤1.安装2.使用三、问题解决方案汇总 前言(本体详解) 在开始学习知识图谱的过程中,首先就是要了解什么是本体(ontology)。 1.本体概念 本体的概念最初源自于哲学领域,在哲学中的定义为“对世界上客观事物的系统描述,即存在论”。哲学中的本体关心的是客观现实的抽象本质。而在计算机领域,本体是可以在语义的层次上来对知识进行描述,可以看做是某一个领域知识的通用模型。 本体是从客观世界中抽象出来

qq_43654669的博客 3万+

LeetCode 141. 环形链表

LeetCode 给定一个链表,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 如果链表中存在环,则返回 true 。 否则,返回 false 。 /** * Definition for singly-linked list. * stru

G4N3 336

ZYNQ裸机双网口通信实战:手把手教你用SDK和LWIP配置PS+PL以太网(附完整源码)

本文详细介绍了在ZYNQ裸机环境下实现双网口通信的全流程,包括硬件配置、LWIP协议栈优化及TCP通信实现。通过Vivado SDK和LWIP协议栈,开发者可以高效配置PS端内置网口与PL端扩展网口,提升嵌入式网络应用的灵活性和性能。附完整源码,助力快速开发。

weixin_30831529的博客 424

环问题 之 快慢指针

应用题目:力扣457 什么是快慢指针 双指针法的一种,双指针除了有左右双指针外还有快慢双指针。 快慢指针是解决检测环问题的经典算法。 两个指针从同一个起点出发,快指针跑的更快,慢指针更慢。若是路径上存在环,那么快指针在进入环后会一直在环内打转,等待慢指针也进入后就能存在快指针追上慢指针的情况。若是路径上不存在环,那么快指针永远不会追上慢指针。 解题代码示例 class Solution { private int[] nums; private int n; public boole

jjy_smile的博客 287

STM32开发者必看:如何在正点原子探索者开发板上快速移植CANopenNode协议栈

本文为STM32开发者提供了在正点原子探索者开发板上快速移植CANopenNode协议栈的实战指南。文章详细介绍了从环境准备、硬件抽象层适配到协议栈初始化与测试的全过程,并分享了PDO配置与性能优化等关键技巧,帮助开发者高效实现CANopen标准化通信。

weixin_29173777的博客 465

ubuntu17.04 UHD 驱动出错

ubuntu 17.04 源码安装UHD

xrh003的博客 1万+

快慢指针判断链表是否有环以及找环的入口

一,定义 快指针fast每次走两步,慢指针slow每次走一步 二,判断是否有环: 刚开始时fast和slow都在链表头: 如果链表无环,那fast和slow指针不可能相遇,且最终fast=null 如果链表有环,记开始位置到环入口长度为k,环长为R,那么t时刻(t>=k),fast在环上(2t-k)%R,slow在环上(t-k)%R的位置,当(2t-k)%R=(t-k)%R时,t=n*R,所以快慢指针一定相遇,相遇点在(-k)%R 三,寻找环入口 快慢指针相遇时,它们都在...

zzuwlan_high的博客 1128

C语言实现惯性导航初始对准全部核心代码

惯性导航初始对准包括间接粗对准和卡尔曼滤波精对准,其中。为基于卡尔曼滤波的精对准,其中。

十八与她的博客 2284

(十八)快慢指针判断环路问题

快指针走两格,慢指针走1格,若有环,则一定会相遇。 简单理解: 一定是快指针先进入环中,若慢指针也进入环中,则两者速度差1。 相当于慢指针不动(相对静止),而快指针以速度为1,追赶慢指针,(是环,一定会遇到) 若没有环,则快指针将会先到达尾部。 时间复杂度O(n),空间复杂度O(1) /** * Definition for singly-linked list. * cla...

FixedStar 的博客 619

30. 如何使用 SEGW 的 redefine 功能对 SAP 标准 OData 服务进行扩展

SAP 发布了很多标准的 Fiori 应用,可以通过笔者的文章里提到的进行浏览。比如 My Opportunities 就是 SAP CRM 领域的一个 Fiori 应用:下图是 Opportunity 明细页面的 Info 标签页:假设我们想在这些标准字段的末尾增添一个新字段 Created By,用来维护当前 Opportunity 的创建者。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1176

深度学习笔记——Transformer

本文详细介绍面试过程中可能遇到的Transformer知识点。

haopinglianlian的博客 1706

【链表】【证明】快慢指针判断链表有环、寻找环入口、计算环大小的原理

问题:         给定一个链表:         1. 判断链表是否有环。         2. 如果链表有环,请找出环入口。         3. 计算环的大小。 思路:快慢指针         分别定义一个快指针fast和慢指针slow,快指针一次走两步,慢指针一次走一步。如果链表没有环,那么fast最终会指向nullptr;如果链表有环,那么快指针和慢指针最终会相遇。所

donghuaan的博客 9110

【Visual Assist X助手安装问题】Visual Assist X无法安装(双击安装包没反应) | Visual Assist X安装后在Visual Studio中找不到(亲测有效)

本文分享了Visual Assisant X助手的安装与使用问题的详细解决办法,因为网上搜集的信息比较少,所以有一定的参考价值。考虑到很多开发新手会遇到上述问题,可能对Windows系统不熟悉,所以相关操作步骤讲解的很详细!

dvlinker的技术专栏 6万+

leetcode(List)--面试题 02.08. 环路检测

leetcode(List)–面试题 02.08. 环路检测 1,题目: 2,思路: 快慢指针: 思路:有俩个指针 fast ,slow分别的从起点a 开始走,slow走一步,fast走里俩步。如果过程中 快fast走到null,说明不存在环。否则fast和slow一定会相遇,相遇后,slow待在原地不动,将 fast放回原点。然后俩个指针每次都走一步,每次都走一步,每次都走一步。当俩个指针相遇的时候,就是环的入口。 证明:如上图所示,a是起点,b是环的入口,c是俩个指针相遇点,ab之间距离为x,bc之间

chen772209的博客 325

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

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

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

leetcode面试题 02.08. 环路检测

给定一个有环链表,实现一个算法返回环路的开头节点。 有环链表的定义:在链表中某个节点的next元素指向在它前面出现过的节点,则表明该链表存在环路。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:tail connects to node index 1 解释:链表中有一个环,其尾部连接到第二个节点。 示例 2: 输入:head = [1,2], pos = 0 输出:tail connects to node index 0 解释:链表中有一个环,其尾部连接到第一个

少说,多做。 2983

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

LeetCode:面试题 02.08. 环路检测

题目解题快慢指针数学证明代码 题目 给定一个有环链表,实现一个算法返回环路的开头节点。 有环链表的定义:在链表中某个节点的next元素指向在它前面出现过的节点,则表明该链表存在环路。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:tail connects to node index 1 解释:链表中有一个环,其尾部连接到第二个节点。 示例 2: 输入:head = [1,2], pos = 0 输出:tail connects to node index 0 解释:链表中.

搬砖工具人的博客 373

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【力扣面试】面试题 02.08. 环路检测

【力扣面试】面试题 02.08. 环路检测 文章目录题目解题思路代码 题目 给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点。若环不存在,请返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 示例 1: 输入:head = [3

MyHeaven7的博客 295

leetcode 面试题02.08.环路检测 Java

环路检测题目链接描述示例初始代码模板代码 题目链接 https://leetcode-cn.com/problems/linked-list-cycle-lcci/ 描述 给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点。 有环链表的定义:在链表中某个节点的next元素指向在它前面出现过的节点,则表明该链表存在环路。 进阶: 你是否可以不用额外空间解决此题? 示例 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:tail connects to node i

博主是个二次元死肥宅~ 421

javascript解力扣面试题 02.08. 环路检测

面试题 02.08. 环路检测 题目 面试题 02.08. 环路检测 给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点。若环不存在,请返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 示例 1: 输入:head = [3,2,0,-4

weixin_44495869的博客 203

PigyChan_LeetCode 面试题 02.08. 环路检测

面试题 02.08. 环路检测 难度中等 给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点。 有环链表的定义:在链表中某个节点的next元素指向在它前面出现过的节点,则表明该链表存在环路。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:tail connects to node index 1 解释:链表中有一个环,其尾部连接到第二个节点。 示例 2: 输入:head = [1,2], pos = 0 输出:tail connects to node index

qq_43596544的博客 181

LeetCode 面试题 02.08. 环路检测

给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点。指针再次到达,则链表中存在环。输入:head = [3,2,0,-4], pos = 1。依次遍历,可以证明,当快慢指针相交时,此时慢指针。输入:head = [1,2], pos = 0。解释:链表中有一个环,其尾部连接到第二个节点。解释:链表中有一个环,其尾部连接到第一个节点。输入:head = [1], pos = -1。如果链表中有某个节点,可以通过连续跟踪。是 -1,则在该链表中没有环。输出:no cycle。解释:链表中没有环。

zheliku的博客 693

力扣题解:面试题 02.08. 环路检测

给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点。若环不存在,请返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。

胡矣 139

LeetCode刷题之 【面试题 02.08. 环路检测】

1 题目 给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点。 有环链表的定义:在链表中某个节点的next元素指向在它前面出现过的节点,则表明该链表存在环路。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:tail connects to node index 1 解释:链表中有一个环,其尾部连接到第二个节点。 示例 2: 输入:head = [1,2], pos = 0 输出:tail connects to node index 0 解释:链表中有一个环

麦田里的守望者 299

【leetcode】面试题 02.08. 环路检测 题解

给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点。 有环链表的定义:在链表中某个节点的next元素指向在它前面出现过的节点,则表明该链表存在环路。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:tail connects to node index 1 解释:链表中有一个环,其尾部连接到第二个节点。 示例 2: 输入:head = [1,2], pos = 0 输出:tail connects to node index 0 解释:链表中有一个环,其尾部连接到第

爱小七爱生活的博客 229

力扣 面试题 02.08. 环路检测

题目 给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点。若环不存在,请返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 示例 输入:head = [3,2,0,-4], pos = 1 输出:tail connects to node

(ง •_•)ง没有困难的工作,只有勇敢的狗狗 189

【leetcode】面试题 02.08. 环路检测

判断链表中是否存在环

落雨碎江南 191
上一篇: Leetcode557. 反转字符串中的单词 III
下一篇: Leetcode217. 存在重复元素
UestcXiye
博客等级 码龄8年 9031粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值