【LeetCode: 142. 环形链表 II + 链表】

C语言学生管理系统(链表实现) C语言学生管理系统主要是由链表实现的学生信息增,删,改,查等功能,我的管理系统由于为用到文件相关知识,感兴趣的同学们可以去学习添加文件保存等功能。 目录 我们首先需要用一个结构体来储存我们每一个学生的信息,以结构体为链表的数据域是不是要好理解一些呢(@@) 接下来就是各种功能的实现,这里我们就要用到函数。 1.菜单,即主页面(这里大家就可以随意发挥了) 2. 添加 3.查找 4.删除 5.修改 6.排序 7.显示 8.退出 完整代码 我们首先需要用一......... 阅读详情

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,优快云-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述
在这里插入图片描述

🚩 题目链接

⛲ 题目描述

给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。

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

不允许修改 链表。

示例 1:

在这里插入图片描述

输入:head = [3,2,0,-4], pos = 1
输出:返回索引为 1 的链表节点
解释:链表中有一个环,其尾部连接到第二个节点。

示例 2:
在这里插入图片描述

输入:head = [1,2], pos = 0
输出:返回索引为 0 的链表节点
解释:链表中有一个环,其尾部连接到第一个节点。

示例 3:
在这里插入图片描述

输入:head = [1], pos = -1
输出:返回 null
解释:链表中没有环。

提示:

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

进阶:你是否可以使用 O(1) 空间解决此题?

🌟 求解思路&实现代码&运行结果


⚡ 链表

🥦 求解思路
  1. 空链表判断:若头节点head为null,直接返回null。
  2. 快慢指针设置与移动:初始化快慢指针fast、slow都指向head,在fast及fast.next不为null时,fast每次走两步,slow每次走一步。
  3. 首次相遇处理:若快慢指针相遇,将fast重设为head。
  4. 找入口节点:快慢指针同步移动,再次相遇时返回相遇节点,此为环入口;若未相遇过,则返回null表示无环。
  5. 有了基本的思路,接下来我们就来通过代码来实现一下。
🥦 实现代码
/**
 * Definition for singly-linked list.
 * class ListNode {
 * int val;
 * ListNode next;
 * ListNode(int x) {
 * val = x;
 * next = null;
 * }
 * }
 */
public class Solution {
    public boolean hasCycle(ListNode head) {
        if (head == null)
            return false;
        ListNode fast = head;
        ListNode slow = head;
        while (fast != null && fast.next != null) {
            fast = fast.next.next;
            slow = slow.next;
            if (fast == slow)
                return true;
        }
        return false;
    }
}

🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

【中等】力扣算法题解析LeetCode142:环形链表 II 本题要求找到链表中环的入口节点,若不存在环则返回 null。采用快慢指针法(Floyd算法): 判环阶段:快指针(每次两步)和慢指针(每次一步)若相遇则存在环; 定位入口:将快指针重置到头节点,两指针同速移动,再次相遇点即为环入口。 数学原理:通过路程关系推导出 头节点到入口的距离 = 相遇点到入口的距离 + (k-1)环长。 阅读详情

相关推荐

将AAL图谱对应到Yeo7大网络中【原理,代码分析】

本文介绍了将AAL2图谱映射到Yeo7大功能网络的方法。通过整合皮层(Yeo2011)、小脑(Buckner2011)和纹状体(Choi2012)三个区域的功能网络图谱,采用投票机制确定每个AAL区域的网络归属。具体步骤包括:1)统计每个AAL区域体素在各网络图谱中的分布;2)选择体素数量最多的网络作为该区域的最终标签。该方法实现了从解剖结构到功能网络的映射,可获得120个AAL区域对应的7大功能网络标签。

yes666666的博客 2202

环形链表II

可以使用快慢指针法,分别定义 fast 和 slow 指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。其实这种情况和n为1的时候 效果是一样的,一样可以通过这个方法找到 环形的入口节点,只不过,index1 指针在环里 多转了(n-1)圈,然后再遇到index2,相遇点依然是环形的入口节点。那么fast指针走到环入口3的时候,已经走了k + n 个节点,slow相应的应该走了(k + n) / 2 个节点。

weixin_44832243的博客 424

AI 模型训练核心方法论:零基础也能落地的 8 个关键阶段

本文是为 AI 零基础学习者打造的模型训练入门指南,以生活化语言拆解核心概念,规避专业术语壁垒。内容先通俗阐释模型训练、监督学习、数据集划分等基础概念,再按问题定义、数据准备、模型选择、环境搭建、训练、评估、调参、部署 8 个阶段,拆解完整训练流程,搭配 PyTorch 代码示例与实战案例,同时提供资源预算、常见问题解决方案及学习路径。指南强调数据的核心重要性,推荐新手优先使用迁移学习和免费 GPU 资源,兼顾理论与实操,帮助学习者快速上手,避开训练误区,独立完成从模型搭建到部署的全流程。

weixin_52741870的博客 468

力扣第142题.环形链表II

142. 环形链表 II题目题解一:快慢指针题解二:哈希表 题目 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 不允许修改 链表。 示例 1: 输入:hea

m0_51456787的博客 1217

Ubuntu 解决WPS缺少宋体,微软雅黑等中文字体

这篇博客解决Ubuntu 18.04 无法使用中文字体的问题 问题描述

分享日常的学习,开展的项目,编写的软件,解决的问题等~ 1万+

基于云平台的ATS系统微服务架构方案研究

在当前智慧地铁的升级转型过程中,城市轨道交通ATS系统面临着稳定性差、运维方 式繁琐和故障应急处理效率低等问题。为此,提出一种基于云平台的ATS系统微服务架构方案; 研究了ATS系统在云平台上的微服务总体架构、ATS应用的微服务划分和设计、容器部署方式 及通信交互模式,可实现系统松耦合和易扩展,达到节约计算资源、提高系统稳定性和运营效 率的目的

mi_lan1的博客 965

1138—单链表操作

输入n个整数,先按照数据输入的顺序建立一个带头结点的单链表,再输入一个数据m,将单链表中的值为m的结点全部删除。分别输出建立的初始单链表和完成删除后的单链表。 Input 第一行输入数据个数n; 第二行依次输入n个整数; 第三行输入欲删除数据m。 Output 第一行输出原始单链表的长度; 第二行依次输出原始单链表的数据; 第三行输出完成删除后的单链表长度; 第四行依次输出完成删除后的单链表数据。...

weixin_44698281的博客 598

(目录)微气候模型ENVI-met模拟的基本使用教程

ENVI-met模拟操作系列(一) 介绍:

ysqzhatian的博客 2万+

环形链表 II

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。双指针,当相交的时候,把慢指针指向头部节点,快慢指针,都每次走一步,再次相遇,相遇的节点就是入环的节点。给定一个链表的头节点 head ,返回链表开始入环的第一个节点。输入:head = [3,2,0,-4], pos = 1。解释:链表中有一个环,其尾部连接到第二个节点。解释:链表中有一个环,其尾部连接到第一个节点。

lang_z的博客 353

Ardupilot chibios IO固件,IO与FMU通信,固件下载(3)

目录 文章目录目录摘要 摘要 本节主要记录自己学习IO与FMU通信

陌城烟雨 2798

高通SDX35:SGMII接口PHY RTL8211FSI-CG驱动适配

高通SDX35 RTL8211F SGMII

不秃头的程序猿Gabriel的博客 785

LeetCode每日精进:142.环形链表II

找到相遇点后,让头结点和相遇点同时往后遍历,找到入环的起始结点,若相遇点为空,直接返回NULL。指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。当n等于1时,即相遇时,快指针刚好绕环一圈,则L = R-X。定义快慢指针,找到相遇结点meet,找到后跳出循环。meet到入环的初始结点的距离等于head到入环的初始结点的距离。,返回链表开始入环的第一个节点。在快慢指针相遇时,fast所走的路程为。链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。

ll778811的博客 591

【CAD】【手把手带你写一个DXF&JAVA解析框架】02——整理DXF元数据实体类,涵盖重要属性与对照组码

本文系统梳理了DXF文件解析中的核心元数据类,重点分析了Tables段(图层、块记录)、Blocks段和Entities段的关键数据结构。通过详细的组码说明和对照代码实现,阐述了图层定义(DXFLayer)、块记录(DXFBlockRecord)、应用程序标识(DXFAppId)等表对象的属性构成;同时解析了直线(DXFLine)、多段线(DXFLwPolyLine)、圆弧(DXFArc)、文字(DXFText)等实体类的几何特征与属性定义。文章还构建了顶点(Vertex)、基类(DXFEntity、DXF

Wonder ZH 267

LeetCode:142. 环形链表 II

LeetCode:142. 环形链表 II 题目描述:给定一个链表的头节点 head,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 不允许修改 链表。

Super algorithm 的博客,技术爱好者。 1217

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Leetcode:142.环形链表 II

A1:可以定义两个指针,分别为快指针和慢指针,快指针一次走两步,慢指针一次一步,如果没有环,那么慢指针一定可以到达链表尾部.如果有环,快指针一定会重新和慢指针相遇,这里可以看成物理上的追击问题,以慢指针为参考系,快指针相当于一次移动一步.环形入口节点到 fast指针与slow指针相遇节点 节点数为y。让index1和index2同时移动,每次移动一个节点, 那么他们相遇的地方就是 环形入口的节点。,n为fast指针在环内走了n圈才遇到slow指针, (y+z)为 一圈内节点的个数A。

Wangcai_Cong的博客 1023

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Leetcode142(力扣142):环形链表II

class Solution{ public: ListNode* detectCycle(ListNode* head) { ListNode* slow=head; ListNode* fast=head; while(fast&&fast->next) { slow=slow->next; fast=fast->next->next; .

weixin_44537258的博客 121

Leetcode第142题:环形链表 II

leetcode刷题,环形链表

Raver & Leaper的博客 560

leetcode [142. 环形链表 II](https://leetcode-cn.com/problems/linked-list-cycle-ii/)

leetcode 142. 环形链表 II 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 不允许修改 链表。 示例 1: 输入:head

yingmu__的博客 443

力扣HOT100之链表:142. 环形链表 II

,则快慢指针的路程关系为2倍的关系,根据上面的性质我们可以得到一个原始的等式,然后经过一步步化简可以得到划红线的结果,其重要性质已经用红字写出,根据上面的性质,我们可以新定义一个慢指针。首先要判断一个链表是否有环,我们就需要定义快慢指针进行判断,在起始阶段,快慢指针都指向链表的头节点,然后进行循环,当快指针。,若在循环内出现了快慢指针相遇的情况,则说明链表内有环,我们进行下一步分析,如下图所示。,从链表头节点出发,每次只移动一个节点,而慢指针。,当二者相遇时,相遇处就是入口,直接返回即可。

weixin_52151595的博客 367

LeetCode:142. 环形链表 II(python)

LeetCode:142. 环形链表 II(python) 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 说明:不允许修改给定的链表。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:ta...

wk的博客 1709

力扣142:环形链表II

环形链表II:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 说明:不允许修改给定的链表。 解答 方法1: 思路: 我们可以使用一个set集合来存储元素,当如果set中有重复值出现是代表有环且为环的入口 算法: 首先,我...

liujie379908的博客 324

Leetcode的AC指南 —— 链表:142.环形链表II

**Leetcode的AC指南 —— 链表:142.环形链表II**。题目介绍:给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。

Huacyu的博客 1023

LeetCode:142.环形链表II

LeetCode:142.环形链表II

xiaoshiguang3的博客 499

力扣:142.环形链表II

和检测环形链表类似的,时间复杂度O(N),空间复杂度O(N)好的过了,之后要做的是使用更便捷的方法进行计算.经验有限,使用官方讲述的快慢指针方法,包含部分推导以及原理讲解,很清晰所以就粘在这里了,并附上python实现.

Pikaqiu_life的博客 483

力扣学习笔记:142. 环形链表 II

题目:142.环形链表II 建议:先看环形链表Ⅰ 算法: 哈希表 和 Ⅰ类似,只是在碰到前面遇到过的结点,就返回该结点的地址即可 快慢指针 我们将入环结点之前的结点距离设为 a ,将在环上快慢指针相遇的结点逆时针到入环结点的距离设为 b ,将在环上快慢指针相遇的结点顺时针到入环结点的距离设为 c 。 我们可以计算 a + n * c + (n + 1) * b = 2 * ( a + b) (快指针的速度是慢指针的两倍) 化简得 a = c + (n - 1) * ( b + c) 这样子,我们

和BUG做朋友的zhi的博客 1068
上一篇: 【LeetCode: 141. 环形链表 + 链表】
下一篇: 【LeetCode: 845. 数组中的最长山脉 + 动态规划】
硕风和炜
硕风和炜 优质创作者: Java技术领域 优质创作者: Java技术领域
博客等级 码龄7年 2万+粉丝 1024原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

硕风和炜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值