单链表OJ题(课堂总结)
1.链表的带环问题

上图就是一个典型的带环链表
1.1如何判读链表是否带环?
最常见的方法就是利用快慢指针,快指针追加慢指针,当二者相等的时候即可判断链表带环
其实现的代码如下:
bool hasCycle(struct ListNode*head)
{
struct ListNode* slow = head,*fast = head;while(fast && fast->next)
{
slow = slow->next;
fast = fast ->next->next;
if(slow == fast)
return true;
}
return false;
}
1.2 为什么快慢指针一定会相遇
1.2.1 两指针每走一步其距离缩小1
假设slow进环的时候fast与其的距离为N,此时每当slow走一步,fast与slow的距离都会缩小1,最后缩小到0,从而两指针相遇。
1.2.2 两指针每走一步其距离缩小2
初步证明:
1.N是偶数,第一轮就追上。
2.N是奇数,第一轮就会错过,距离变成C-1(C为环的长度)。
a.如果C-1是偶数,下一轮就追上了
b.如果C-1是奇数,那么就永远追不上
深度证明:

假设slow进环时,fast跟slow的距离为N
slow走的距离是:L
fast走的距离:L+x*C+C-N
slow进环时,假设fast已经在环里转了x圈
如果fast走的距离是slow的3倍
3*L = L+x*C + C-N
2*L = (x+1)*C-N
偶数 = (x+1)*偶数-奇数 所以只有两种情况: N是奇数,C也是奇数
N是偶数时,C也是偶数
由此可以得出N是奇数且C是偶数不能同时存在,在初步证明中的永远追不上不成立
把两种情况代入初步证明中可以得出结论
结论:一定能追上
N偶数第一轮就追上了
N是奇数第一轮追不上,C-1是偶数第二轮就追上
1.3 找环的入口点
1.3.1 方法一 
一个指针从头结点开始前进,而slow指针在与fast相遇点开始前进,当head指针和slow指针相遇的时候,该点为环的入口点。
证明如下:

相遇时:
slow走的路程:L + N
fast走的路程:L+x*C+N
fast走的路程是slow的2倍:化简后的公式为:L =x*C-N -> L = (x-1)*C + C - N
以下为代码的实现:
struct ListNode*meet = slow;
while(meet != head)
{
meet = meet ->next;
head = head ->next;
}
return meet;
1.3.2 方法二

newhead = meet->next;
newhead =NULL;
通过上述两个操作,让找环入口点转化为找两个链表的交点问题
相关文章:
单链表OJ题(课堂总结)
1.链表的带环问题 上图就是一个典型的带环链表 1.1如何判读链表是否带环? 最常见的方法就是利用快慢指针,快指针追加慢指针,当二者相等的时候即可判断链表带环 其实现的代码如下: bool hasCycle(struct ListNode*head) { s…...
cad角度如何精确到0.1
可以通过更改角度精度的方式把角度的标注精确到小数点后几位,具体方法如下: 1、打开一个CAD文档,在文档中画一个角,如下图: 文章源自设计学徒自学网-https://www.sx1c.com/47920.html 2、给此角进行角度的标注&#…...
STM32H743+USBHID+CubeMX配置
一、环境准备 电脑系统:Windows 10 专业版 20H2 IDE:Keil v5.35、STM32CubeMX v6.5.0 测试硬件:正点原子阿波罗STM32H743 二、测试步骤 1、使用用例工程 配置STM32H743定时器功能-CSDN博客https://blog.csdn.net/horse_2007s/article/d…...
路由传参和获取参数的三种方式
路由传参和获取参数在前端开发中是一个常见的需求,特别是在使用如 Vue.js、React 等前端框架时。下面,我将以 Vue.js 为例,介绍三种常见的路由传参和获取参数的方式: 1. 使用 params 传参 传参: 在路由配置中&#…...
代码随想录算法训练营第四十一天|509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
代码随想录算法训练营第四十一天 509. 斐波那契数 题目链接:509. 斐波那契数 动规五部曲: 确定dp数组以及下标的含义:第i个数的斐波那契数值是dp[i]确定递推公式:dp[i] dp[i - 1] dp[i - 2];dp数组如何初始化:dp[…...
HTML5表单控件:新时代的交互魔法手册
🚀HTML5表单控件:新时代的交互魔法手册 🎯HTML5表单控件速览:新面孔,新功能1. 日期时间选择器(Date & Time Picker)2. 数字输入框(Number Input)3. 搜索框࿰…...
WordPress安装插件失败No working transports found
1. 背景(Situation) WordPress 社区有非常多的主题和插件,大部分人用 WordPress 都是为了这些免费好用的主题和插件。但是今天安装完 WordPress 后安装插件时出现了错误提示:“ 安装失败:下载失败。 No working trans…...
多线程理论及操作
【一】什么是线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程 一条流水线必须属于一个车间,一个车间的工作过程是一个进程 车间负责把资源整合到一起ÿ…...
本周 MoonBit 核心库进行 API 整理工作、工具链持续完善
MoonBit更新 【核心库 Breaking】核心库进行API整理工作 所有immutable数据结构被放在immut路径下,如immutable_hashmap.Map变为immut/hashmap.Map // Before let a : immutable_hashmap.Map[Int, Int] immutable_hashmap.make() // After let a : immut/hashma…...
Golang net/http标准库常用方法(三)
大家好,针对Go语言 net/http 标准库,将梳理的相关知识点分享给大家~~ 围绕 net/http 标准库相关知识点还有许多章节,请大家多多关注。 文章中代码案例只有关键片段,完整代码请查看github仓库:https://github.com/hltfa…...
24校招总结
个人背景 本科:三本通信专业 硕士:B区双非计算机硕 今年2月签了东南沿海二线城市某公司C游戏服务端开发 我同学大部分都是去电网,大专老师,气象局事业编……就我这个是纯牛马了。 离收到Offer3个月了,前段时间参加…...
PHP APCu缓存使用与避坑
APCu 极简概括: PHP 的开源内存缓存扩展,类比Redis,但是一般都用Redis,所以APCu用的很少。官方文档:https://www.php.net/manual/zh/apcu.configuration.php解决问题:类比Redis做缓存组件,提升…...
mybatis xml
delete from t_enterprise_output_value where output_id IN #{outputId} 批量插入 功能:单个或批量插入数据,若数据已存在,则忽略 <insert id"saveBatchIgnoreInto" parameterType"java.util.List">insert igno…...
“不是我兄弟”!刘强东内部“狼性训话”流出!
今天,京东创始人刘强东5月24日的线上讲话流出。 在这次线上讲话中,刘强东首先宣布为全体采销员工涨薪20%—100%,随后进行了一番“狼性训话”。往期报道可戳:刘强东怒了:“不是我兄弟”! 刘强东在讲话中指…...
函数调用时长的关键点:揭秘参数位置的秘密
新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、默认参数的秘密 示例代码 二、关键字参数与位置参数的舞蹈 示例代码 总结 一、默认参…...
【数据分析面试】54.员工信息(HR)数据库搭建
题目 由于发展需求,进一步提高公司人员统筹管理的能力,公司决定要重新升级人力数据管理系统。 现在,你的任务是为公司重新设计和搭建一个员工信息数据库。 提示:考虑HR管理系统的功能,比如人员信息、入职时间、离职…...
通过JavaScript本地存储数据
文章目录 本地存储本地存储分类 - localStorage本地存储分类 - sessionStorage存储复杂数据类型解决方法 本地存储 数据存储在用户浏览器中设置、读取方便、甚至页面刷新都不丢失数据容量较大,sessionStorage和localStorage约5M左右 本地存储分类 - localStorage …...
CTF-web-攻防世界-3
1、inget (1)、进入网站,提示传入id值 (2)、用一些闭合方式,返回都一样。 (3)、尝试万能密码。获得flag 2、mfw (1)、页面没有什么特殊的异常,使用dirsearch进行目录扫描,有一些.git文件。看样子是.git文件泄露。 使用githa…...
【附代码案例】深入理解 PyTorch 张量:叶子张量与非叶子张量
在 PyTorch 中,张量是构建神经网络模型的基本元素。了解张量的属性和行为对于深入理解模型的运行机制至关重要。本文将介绍 PyTorch 中的两种重要张量类型:叶子张量和非叶子张量,并探讨它们在反向传播过程中的行为差异。 叶子张量与非叶子张…...
TypeScript 学习笔记(七):TypeScript 与后端框架的结合应用
1. 引言 在前几篇学习笔记中,我们已经探讨了 TypeScript 的基础知识和在前端框架(如 Angular 和 React)中的应用。本篇将重点介绍 TypeScript 在后端开发中的应用,特别是如何与 Node.js 和 Express 结合使用,以构建强类型、可维护的后端应用。 2. TypeScript 与 Node.js…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
