当前位置: 首页 > news >正文

单链表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. 搜索框&#xff0…...

WordPress安装插件失败No working transports found

1. 背景(Situation) WordPress 社区有非常多的主题和插件,大部分人用 WordPress 都是为了这些免费好用的主题和插件。但是今天安装完 WordPress 后安装插件时出现了错误提示:“ 安装失败:下载失败。 No working trans…...

多线程理论及操作

【一】什么是线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程 一条流水线必须属于一个车间,一个车间的工作过程是一个进程 车间负责把资源整合到一起&#xff…...

本周 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} 批量插入 功能&#xff1a;单个或批量插入数据&#xff0c;若数据已存在&#xff0c;则忽略 <insert id"saveBatchIgnoreInto" parameterType"java.util.List">insert igno…...

“不是我兄弟”!刘强东内部“狼性训话”流出!

今天&#xff0c;京东创始人刘强东5月24日的线上讲话流出。 在这次线上讲话中&#xff0c;刘强东首先宣布为全体采销员工涨薪20%—100%&#xff0c;随后进行了一番“狼性训话”。往期报道可戳&#xff1a;刘强东怒了&#xff1a;“不是我兄弟”&#xff01; 刘强东在讲话中指…...

函数调用时长的关键点:揭秘参数位置的秘密

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、默认参数的秘密 示例代码 二、关键字参数与位置参数的舞蹈 示例代码 总结 一、默认参…...

【数据分析面试】54.员工信息(HR)数据库搭建

题目 由于发展需求&#xff0c;进一步提高公司人员统筹管理的能力&#xff0c;公司决定要重新升级人力数据管理系统。 现在&#xff0c;你的任务是为公司重新设计和搭建一个员工信息数据库。 提示&#xff1a;考虑HR管理系统的功能&#xff0c;比如人员信息、入职时间、离职…...

通过JavaScript本地存储数据

文章目录 本地存储本地存储分类 - localStorage本地存储分类 - sessionStorage存储复杂数据类型解决方法 本地存储 数据存储在用户浏览器中设置、读取方便、甚至页面刷新都不丢失数据容量较大&#xff0c;sessionStorage和localStorage约5M左右 本地存储分类 - localStorage …...

CTF-web-攻防世界-3

1、inget (1)、进入网站&#xff0c;提示传入id值 (2)、用一些闭合方式&#xff0c;返回都一样。 (3)、尝试万能密码。获得flag 2、mfw (1)、页面没有什么特殊的异常&#xff0c;使用dirsearch进行目录扫描&#xff0c;有一些.git文件。看样子是.git文件泄露。 使用githa…...

【附代码案例】深入理解 PyTorch 张量:叶子张量与非叶子张量

在 PyTorch 中&#xff0c;张量是构建神经网络模型的基本元素。了解张量的属性和行为对于深入理解模型的运行机制至关重要。本文将介绍 PyTorch 中的两种重要张量类型&#xff1a;叶子张量和非叶子张量&#xff0c;并探讨它们在反向传播过程中的行为差异。 叶子张量与非叶子张…...

TypeScript 学习笔记(七):TypeScript 与后端框架的结合应用

1. 引言 在前几篇学习笔记中,我们已经探讨了 TypeScript 的基础知识和在前端框架(如 Angular 和 React)中的应用。本篇将重点介绍 TypeScript 在后端开发中的应用,特别是如何与 Node.js 和 Express 结合使用,以构建强类型、可维护的后端应用。 2. TypeScript 与 Node.js…...

s2-pro音色克隆教程:解决参考音频背景噪音导致失真的处理技巧

s2-pro音色克隆教程&#xff1a;解决参考音频背景噪音导致失真的处理技巧 s2-pro是Fish Audio开源的专业级语音合成模型镜像&#xff0c;支持文本转语音&#xff0c;并可以通过参考音频复用音色。本文将重点介绍如何处理参考音频中的背景噪音问题&#xff0c;确保音色克隆效果…...

微信小程序图表库终极指南:快速实现数据可视化的完整教程

微信小程序图表库终极指南&#xff1a;快速实现数据可视化的完整教程 【免费下载链接】wx-charts 微信小程序图表库&#xff0c;Charts for WeChat Mini Program 项目地址: https://gitcode.com/gh_mirrors/wx/wx-charts 在微信小程序开发中&#xff0c;如何高效地展示数…...

腾讯优图视觉模型入门:Youtu-VL-4B-Instruct快速上手教程

腾讯优图视觉模型入门&#xff1a;Youtu-VL-4B-Instruct快速上手教程 1. 认识Youtu-VL-4B-Instruct 想象一下&#xff0c;你正在处理一批产品图片&#xff0c;需要为每张图片写描述、识别文字内容、分析图表数据。传统方法可能需要多个工具来回切换&#xff0c;而现在&#x…...

终极指南:如何使用UABEA高效处理Unity Asset Bundle资源

终极指南&#xff1a;如何使用UABEA高效处理Unity Asset Bundle资源 【免费下载链接】UABEA c# uabe for newer versions of unity 项目地址: https://gitcode.com/gh_mirrors/ua/UABEA UABEA是一款专业的C#资产包提取工具&#xff0c;专门针对新版本Unity引擎的Asset B…...

如何快速清理Windows冗余驱动:Driver Store Explorer终极指南

如何快速清理Windows冗余驱动&#xff1a;Driver Store Explorer终极指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 系统盘空间莫名消失&#xff1f;新硬件总是识别失败&#xff1…...

基于STM32单片机指纹考勤系统签到打卡设计

一、系统介绍 本文介绍了一种基于 STM32 单片机的指纹开锁签到考勤系统。该系统以 STM32F103C8T6 单片机核心板为控制中枢&#xff0c;整合了多个关键模块。用户可根据实际需求选择 2.4 寸或 1.44 寸的 TFT 彩屏&#xff0c;用于清晰地显示系统状态及操作提示信息。可选的无线蓝…...

程序实现仪器故障时,自动保存当前数据,方便维修时分析故障原因。

一、实际应用场景描述在某高校《智能仪器》实验中&#xff0c;使用一台高精度温度采集仪&#xff1a;- 仪器长期运行&#xff08;24h 连续采样&#xff09;- 偶发异常&#xff1a;- 传感器断线- ADC 超限- 通信超时- 一旦故障&#xff1a;- 当前采样数据丢失- 维修人员只能“凭…...

HY-Motion-1.0本地部署全流程:Docker镜像快速启动教程

HY-Motion-1.0本地部署全流程&#xff1a;Docker镜像快速启动教程 1. 引言 想用简单的文字描述就能生成专业的3D角色动画吗&#xff1f;HY-Motion 1.0让这个想法变成了现实。这是一个基于先进AI技术的文本生成3D动作模型&#xff0c;只需要输入英文描述&#xff0c;就能自动生…...

通义千问2.5-7B惊艳案例展示:看它如何写出高质量营销文案

通义千问2.5-7B惊艳案例展示&#xff1a;看它如何写出高质量营销文案 1. 模型能力概览 通义千问2.5-7B-Instruct作为阿里最新发布的70亿参数指令微调模型&#xff0c;在文本生成领域展现出令人惊艳的能力。这款"中等体量、全能型、可商用"的模型具有以下核心优势&a…...

知识图谱在电商推荐系统中的5个落地场景:从商品关系到用户画像的实践指南

知识图谱在电商推荐系统中的5个落地场景&#xff1a;从商品关系到用户画像的实践指南 当你在电商平台搜索"蓝牙耳机"时&#xff0c;系统不仅会推荐同类商品&#xff0c;还可能智能搭配运动臂包或防水手机壳——这背后正是知识图谱在重新定义推荐逻辑。不同于传统协同…...