链表|142.环形链表

ListNode *detectCycle(ListNode *head) {ListNode *fast = head, *slow = head;while (fast && fast->next) {// 这里判断两个指针是否相等,所以移位操作放在前面slow = slow->next;fast = fast->next->next;if (slow == fast) { // 相交,开始找环形入口:分别从头部和从交点出发,找到相遇的点就是环形入口ListNode *f = fast, *h = head;while (f != h) f = f->next, h = h->next;return h;}}return NULL;
}

代码简短却不好理解

一、出错点

1.一开始不会判断是否有环  (快慢指针判断)

2.理解有环时,快指针追慢指针

二、理解后的思路

那么相遇时: slow指针走过的节点数为: x + y, fast指针走过的节点数:x + y + n (y + z),n为fast指针在环内走了n圈才遇到slow指针, (y+z)为 一圈内节点的个数A。

因为fast指针是一步走两个节点,slow指针一步走一个节点, 所以 fast指针走过的节点数 = slow指针走过的节点数 * 2:

(x + y) * 2 = x + y + n (y + z)

两边消掉一个(x+y): x + y = n (y + z)

因为要找环形的入口,那么要求的是x,因为x表示 头结点到 环形入口节点的的距离。

所以要求x ,将x单独放在左面:x = n (y + z) - y ,

再从n(y+z)中提出一个 (y+z)来,整理公式之后为如下公式:x = (n - 1) (y + z) + z 注意这里n一定是大于等于1的,因为 fast指针至少要多走一圈才能相遇slow指针。

这题有点数学要求,还没完全搞明白,明天再练习一下。

代码随想录 (programmercarl.com)

三、总结

其实我现阶段所理解的算法题就是把实际问题转化为数学问题表达出来,然后再用程序语言执行。

是不是有点像数学建模的过程哈哈哈!

好吧,等算法练习到了一定程度还要提高数学思维。

还是要多看题,多做题,多敲代码。

这个题很好的锻炼了代码思维。

把环形链表讲清楚! 如何判断环形链表?如何找到环形链表的入口? LeetCode:142.环形链表II_哔哩哔哩_bilibili

这题不理解看看视频,帮助很大。


 

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

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

相关文章

考研复试要想顺利通关,务必掌握的一些问题

亲爱的学弟学妹们,大家好! 我是研一的学姐,深知考研路上的艰辛与不易。如今,为了回馈广大考研学子,我决定将自己精心整理的考研复试资料拿出来与大家分享,希望能为你们的复试之路添砖加瓦,助你…

复杂的数据类型如何转成字符串!

1.首先,会调用 valueOf 方法,如果方法的返回值是一个基本数据类型,就返回这个值, 如果调用 valueOf 方法之后的返回值仍旧是一个复杂数据类型,就会调用该对象的 toString 方法, 如果 toString 方法调用之后…

【C语言】linux内核dev_queue_xmit

一、中文注释 这两个函数是Linux内核网络子系统中负责发起网络包(sk_buff结构)传输的代码。下面我将用中文对这两个函数做一个简单的注释: /*** __dev_queue_xmit - 发送一个buffer* skb: 要发送的buffer* sb_dev: 子设备,用于层…

2023年第三届中国高校大数据挑战赛(第一场)B题思路

竞赛时间 (1)报名时间:即日起至2024年3月8日 (2)比赛时间:2024年3月9日8:00至2024年3月12日20:00 (3)成绩公布:2024年4月30日前 赛题方向:文本或图象分析方…

LeetCode 2834.找出美丽数组的最小和:数学(等差数列求和)——O(1)的做法

【LetMeFly】2834.找出美丽数组的最小和:数学(等差数列求和)——O(1)的做法 力扣题目链接:https://leetcode.cn/problems/find-the-minimum-possible-sum-of-a-beautiful-array/ 给你两个正整数:n 和 target 。 如果…

【老文新说】C++读取.shp文件

本文目录 1. .shp文件简介2. shp文件格式2.1 文件头2.2 文件记录2.3 多边形的段(Part) 3. shp文件读写——C3.1 仓库地址3.2 代码结构简介 1. .shp文件简介 shp文件是ESRI(美国环境系统研究所公司)开发的一种用于存储和描述空间数据的文件格式&#xff…

Android打包cannot find symbol import androidx.annotation.NonNull

不知道从什么时候开始 implementation(“androidx.annotation:annotation:1.1.0jar”)会导致打包失败,需要改成 implementation(“androidx.annotation:annotation-jvm:1.7.0jar”) 这样就能解决Android打包类似下面的问题 cannot find symbol import androidx.ann…

12. 建立用户表并使用雪花算法生成用户ID

文章目录 一、建立用户表二、雪花算法生成唯一ID三、将雪花算法整合到我们的项目中 一、建立用户表 上一节我们搭建完了脚手架,从这一节开始,就正式进入到业务逻辑的开发了。首先要开发的就是博客系统的用户注册与登录功能。 既然涉及到用户&#xff0…

必用的10个Python装饰器

装饰器(Decorators)是Python中一种强大而灵活的功能,用于修改或增强函数或类的行为。装饰器本质上是一个函数,它接受另一个函数或类作为参数,并返回一个新的函数或类。它们通常用于在不修改原始代码的情况下添加额外的…

Spring MVC RequestMappingHandlerAdapter原理解析

在Spring MVC框架中,RequestMappingHandlerAdapter是一个核心的组件,负责将请求映射到具体的处理器方法上,并调用这些方法来处理请求。其中,invokeHandlerMethod方法是这个适配器中的一个关键方法,它负责实际调用处理器…

XSS靶场-DOM型初级关卡

一、环境 XSS靶场 二、闯关 1、第一关 先看源码 使用DOM型&#xff0c;获取h2标签&#xff0c;使用innerHTML将内容插入到h2中 我们直接插入<script>标签试一下 明显插入到h2标签中了&#xff0c;为什么不显示呢&#xff1f;看一下官方文档 尽管插入进去了&#xff0…

存算一体成为突破算力瓶颈的关键技术?

大模型的训练和推理需要高性能的算力支持。以ChatGPT为例&#xff0c;据估算&#xff0c;在训练方面&#xff0c;1746亿参数的GPT-3模型大约需要375-625台8卡DGX A100服务器训练10天左右&#xff0c;对应A100 GPU数量约3000-5000张。 在推理方面&#xff0c;如果以A100 GPU单卡…

46. 【Linux教程】逻辑卷与 LVM 介绍

本小节介绍 Linux 逻辑卷&#xff0c;若标准分区上面有一个文件系统&#xff0c;想要给这个文件系统添加额外的空间时&#xff0c;可以通过将另外一个硬盘上的分区加入已有文件系统&#xff0c;Linux 中的逻辑卷管理器(LVM)软件包就可以做这个工作。 1. 逻辑卷介绍 LVM 是逻辑…

【Leetcode每日一刷】数组|双指针篇:977. 有序数组的平方、76. 最小覆盖子串(附滑动窗口法详解)

力扣每日刷题 一、977. 有序数组的平方1.1题目1.2、解题思路1.3、代码实现——C 二、76. 最小覆盖子串2.1&#xff1a;题目2.2、解题思路2.3&#xff1a;代码实现——c2.4&#xff1a;易错点 一、977. 有序数组的平方 1.1题目 [题目链接]( 1.2、解题思路 题型&#xff1a;双…

nextjs 12 和 13的区别

Next.js 12和Next.js 13在多个方面存在显著的区别。以下是一些主要的差异点&#xff1a; 1、文件夹架构和路由&#xff1a; 在Next.js 12中&#xff0c;存在名为pages的文件夹&#xff0c;其中包含一些特定命名的文件&#xff0c;如_app.ts。而在Next.js 13中&#xff0c;文件…

词语排列组合

为什么会出现这个&#xff1f; 1. 我们已进入越来越复杂的世界 2. 任何遇见的每一件事情都有复杂度&#xff0c; 3. 从小 > 大&#xff0c;从 弱 > 强&#xff0c;从有限0 > 无限 4. 主要是今天&#xff0c;用查找替换&#xff0c;发现有好多的词语组合 5. 这个词语排…

【银河商学】大蓝短视频学习02——流量突围实战

【银河商学】大蓝短视频学习02——流量突围实战 内容大纲 找对标找准你的"竞争对手" 定形式选定适合你的视频形式 做内容选题决定命运 2s上热门 一、找对标 1. 为什么要找对标 标准答案,少走弯路99%的问题,都有标准答案。 找个懂得人问一问 秒上热门,快速起号预…

思维调试:为什么FormatMessage提示找不到资源?

在不调试的情况下解决下面的问题&#xff0c;说明你的思维调试能力又进阶了。 问题 我在调用 FormatMessage 函数加载一个插入的资源字符串&#xff0c;由于某种未知的原因&#xff0c;它没能按预期那样工作。 我要加载的字符串类似于这样的 “Blah blah blah %1. Blah blah …

QT中结构体和QbyteArray的转换,可加帧头帧尾

demo源码&#xff1a; #include <QApplication> #include <QDebug> #include <QByteArray>// 头 typedef struct tagEXT_HEADER {unsigned short type 0x5642; }EXT_HEADER;// 数据包格式 typedef struct tagMsgFormat {EXT_HEADER heade…

JavaEE——简单认识JS(Web API)

文章目录 一、认识什么是 WebAPI二、认识事件三、操作元素1. innerHTML 属性2. 获取 / 修改元素内容3. 获取 / 修改 元素属性4. 获取 / 修改 表单元素属性5. 获取 / 修改 样式属性6. 创建 / 删除元素 一、认识什么是 WebAPI 1.什么是API 在我们了解 WebAPI 之前&#xff0c;我们…