目录

  • 一、相交链表
  • 二、环形链表I
  • 三、环形链表II
  • 总结


一、相交链表

相交链表
在这里插入图片描述
在这里插入图片描述

首先理解什么是链表相交,相交即存在共用的节点,链表相交有三种情况,

  1. 中间位置相交
  2. 头部就开始相交
  3. 尾部相交

在这里插入图片描述
如图pcurA和pcurB就都有一个next指针指向同一个节点
这几种链表结构画成图如下
在这里插入图片描述
为什么说链表中没有第一种结构呢?
在这里插入图片描述
相交点即一个节点,其包括两个组成部分,一个是存储的数据,一个是next指针,一个节点的next指针不可能同时指向两个节点

这里也可以总结出两个链表相交的条件:
两个链表的尾节点相同,两个链表一定相交

思路:求两个链表的长度,长链表先走长度差步,长短链表开始同步遍历,找相同的节点

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

return NULL把结果给远程服务器,会把结果包装一下,最后输出没有相交点


二、环形链表I

环形链表I
简单来说,如果链表带环,链表尾节点的next指针不会直接置为空,且遍历链表是一个死循环的
补充:环形链表的尾节点甚至可以指向自己
在这里插入图片描述

思路:快慢指针,慢指针每次走一步,快指针每次走两步,如果slow和fast指向同一节点,说明链表带环,类似于表盘的时钟和分钟

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
补充:快慢指针在一个链表上开始遍历,如果该链表不是带环的,那节点一定为空,这种链表又分为奇数和偶数情况
在这里插入图片描述

证明1:接下来最重要的部分来了,为什么在带环链表里面,慢指针每次走一步,快指针每次走两步,最终一定会相遇

在这里插入图片描述
图中slow的位置是入环点,入环之后是一个圆,其运动路径是一个圆。假设slow走到入环点,fast已经走到如图位置,此时slow和fast之间的距离最大,为N,此时slow走一步,fast走两步
在这里插入图片描述
二者之间距离变为N+1-2=N-1,继续就是N-2,N-3,如图最后变为0,也就是相遇,所以慢指针走一步,快指针走两步,如果是环形链表一定会相遇,就像表盘当中的时针和分针一样。

证明2:在环形链表中,慢指针每次走一步,快指针每次走3,4,5步,快慢指针在环形链表中还会相遇吗?

在这里插入图片描述
这里就以慢指针每次走一步,快指针每次走三步为例,依旧假设此时slow刚入环,此时slow和fast之间的距离最大,为N。
此时slow走一步,fast走三步,二者距离变为N+1-3=N-2。再一次就是N-2+1-3=N-4。
在这里插入图片描述
此时二者之间距离想要变为0,N必须要是偶数才行,这一圈才可以追上。若N为奇数(比如说N=7),7-2=5,5-2=3,3-2=1,1-2=-1。这一圈便追不上了
这样本来fast在追slow,二者距离变为-1,fast在slow前面,变为slow追fast。
当套圈之后,slow和fast的距离便变为了下图红线的长度,加入一圈的周长是C,套圈之后二者的距离便变为了C-1
在这里插入图片描述
在C-1的距离又要slow走一步,fast走三步,继续开始追逐
在这里插入图片描述
如果会相遇,说明在环形链表里面,fast走三步也能判断链表是否是带环的,反之

接下来就要证明C-1到底是奇数还是偶数
在这里插入图片描述
这是在第二圈开始追逐,这里fast的位置不代表fast第一圈入环之后到此处,slow就入环,在此之前fast可能已经走了好几圈,下图给出fast和slow的路程关系
在这里插入图片描述
由于快指针无论在圈里走几圈,都不影响其在圈里的位置,所以(n+1)可以忽略掉,就剩下C-N,前面明确的规定N是个奇数,所以C也一定为奇数。

所以得出结论N为奇数,C也一定为奇数,所以在下一圈,快慢指针也一定会相遇

最终结论就是下图:
在这里插入图片描述


三、环形链表II

环形链表II
在这里插入图片描述
前一道题用快慢指针判断了链表是否带环,如果是一个带环的链表,快慢指针一定会相遇,但是相遇节点不一定是入环节点,可以是环内的任意一个节点

思路:首先,快慢指针一定会在环里相遇,相遇点到入环节点的距离 == 头节点到入环节点的距离

在这里插入图片描述
在这里插入图片描述
接下来要找起始节点,就一个从头出发,一个从相遇点出发,同步遍历,当走到了同一个节点,那这个节点一定是入环节点

代码如下:
在这里插入图片描述

证明:为什么在带环链表中,快慢指针相遇点到入环节点的距离 == 头节点到入环节点的距离

在这里插入图片描述
图中有一处标注有些偏差,头节点到入环节点的距离为L,假设环的周长为R
在这里插入图片描述
(n-1)R是快指针在环里面饶了多少圈,快指针无论绕多少圈都是在相遇点和slow相遇,所以(n-1)R可以忽略,所以最后得出红字部分结论


总结

真写爽了,数据结构这部分的题写的想吐了,创作不易,三连支持~

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

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

相关文章

属性关键字

属性关键字深拷贝与浅拷贝类型各类对象深浅拷贝判断完全深拷贝的实现属性关键字property、synthesize和dynamic原子操作读写权限内存管理strong 🆚 copy总结深拷贝与浅拷贝 先前学习OC时已经对深浅拷贝进行了一次学习,这里进行一个复习总结和补充&#…

突发奇想,还未实践,在Vben5的Antd模式下,将表单从「JS 配置化」改写成「模板可视化」形式(豆包版)

在 Vben5 的 Antd 模式下,完全可以将表单从「JS 配置化」改写成「模板可视化」形式,把表单项直接写在 Vue 模板中,更直观且符合传统 Vue 开发习惯。以下是完整的改写示例,保留原功能但结构更清晰: 改写思路 放弃 JS 中…

【更新完毕】2025数学建模国赛E题思路代码文章高教社杯全国大学生数学建模-AI 辅助智能体测

全部更新完毕 包含完整的文章全部问题的代码、结果、图表 完整内容请看文末最后的推广群基于AI姿态识别的立定跳远运动分析与个性化训练优化研究 随着《国家学生体质健康标准》的颁布实施,通过AI技术辅助体育运动分析已成为提升学生体质健康水平的重要手段。本研究针…

小白友好,无需基础也能快速上手的AI部署工具,一键部署

AI大模型相信已经成为许多人工作和生活中的得力助手。然而,对于大多数普通用户而言,将强大的AI模型部署到自己的电脑上,似乎是一项遥不可及的技术活,往往涉及到复杂的命令行操作、环境配置和代码调试。那有没有一种工具&#xff0…

《Python复刻植物大战僵尸开源项目实战:Pygame框架+JSON关卡设计,解锁塔防游戏开发新技能》​

📌 大家好,我是智界工具库,每天分享好用实用且智能的开源项目,以及在JAVA语言开发中遇到的问题,如果本篇文章对您有所帮助,请帮我点个小赞小收藏小关注吧,谢谢喲!😘 博主…

CCS——将工程中的 include / lib 修改为相对路径,方便工程分享

在使用 Code Composer Studio (CCS) 开发 DSP 或 ARM 工程时,经常会遇到这样一个问题:在 A 电脑上能正常编译的工程,拷贝到 B 电脑上后就报错。错误的原因通常是 工程使用了绝对路径,而不同电脑上的文件路径不一致,比如…

java解析网络大端、小端解析方法

文章目录一、背景介绍二、说明核心概念:什么是字节序(Endianness)?大端字节序 (Big-Endian)小端字节序 (Little-Endian)三、不同解析方式介绍一、背景介绍 中转台通过SNMP协议V1\V2上报中转台IP,然后程序解析入库&…

【数据分享】土地利用矢量shp数据分享-甘肃

今天要说明数据就是土地利用shp数据分享-甘肃。数据介绍▲ 1km土地利用数据(2020年)▲ 土地利用数据(2025年)▲土地利用数据(2018年)▲ 30m土地利用数据(2023年)▲ 公路铁路道路河流…

java log相关:Log4J、Log4J2、LogBack,SLF4J

目录测试maven依赖logback.xml测试主程序测试输出arthas查看logger总结使用参考文档测试 maven依赖 <dependencies><!-- SLF4J API --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>…

AES加密算法详细加密步骤代码实现--身份证号码加解密系统

系统概述 本系统是一个基于AES-256-CBC加密算法的身份证号码加解密工具&#xff08;手搓底层步骤&#xff09;&#xff0c;针对的是上一篇文章对的AES加密原理的讲解&#xff0c;虽说是演示&#xff0c;但功能完善&#xff0c;可单独提供接口给项目调用&#xff0c;采用Python…

LangChain: Models, Prompts 模型和提示词

获取openapikey #!pip install python-dotenv #!pip install openai import osimport openai ​ from dotenv import load_dotenv, find_dotenv _ load_dotenv(find_dotenv()) # read local .env file openai.api_key os.environ[OPENAI_API_KEY] # account for deprecat…

ACMESSL自动续签教程

目录 1、选择申请证书 ​编辑2、选择CA机构 ​编辑3、选择自动验签 ​编辑4、证书续签设置 5、自动发布设置 本教程实现ACMESSL自动续签&#xff0c;请按照此教程实现。 1、选择申请证书 点击快捷入口或者订单或证书列表中的【创建证书】按钮&#xff1a; 2、选择CA机构 …

基于飞算JavaAI的在线图书借阅平台设计实现

项目概述与需求分析 1.1 项目背景与意义 随着数字化时代的快速发展&#xff0c;传统图书馆管理模式已无法满足现代读者的需求。在线图书借阅平台通过互联网技术将图书资源数字化&#xff0c;为读者提供便捷的检索、借阅和管理服务&#xff0c;有效解决了传统图书馆开放时间有…

通过API接口管理企业微信通讯录案例

1.开始前需要登录企业微信管理员后台&#xff0c;开启通讯录同步&#xff0c;同时添加企业可信IP地址&#xff0c;记录下Secret信息和企业ID&#xff0c;后面的程序会用到这两个参数。2.下面是用python写的创建企业微信账号的具体案例。#!/usr/bin/env python3 # -*- coding: u…

硬件开发_基于物联网的自动售卖机系统

一.系统概述 物联网自动售卖机系统的主要功能如下&#xff1a; 核心控制器&#xff1a;采用STM32单片机作为系统核心&#xff0c;负责整体数据处理和各设备的统一控制。商品选择&#xff1a;支持语音识别及按键方式&#xff0c;方便用户在售卖机内选择商品。语音播报&#xff1…

AGENTS.md: AI编码代理的开放标准

每个项目都有一个 README.md 文件供人类阅读。但随着 AI 编码代理和 AI 辅助开发的兴起,我们需要一个新标准:AGENTS.md。这个 Markdown 文件定义了代理如何构建、测试和协作。 这就是 AGENTS.md 的作用。 它是一个简单的 Markdown 文件,告诉 AI 助手如何在你的项目中操作:…

如何解决 OutOfMemoryError 内存溢出 —— 原因、定位与解决方案

网罗开发&#xff08;小红书、快手、视频号同名&#xff09;大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等方…

阿里云服务器配置ssl-docker nginx

# 切换到您当前的目录 cd /AAAAAAAAAAAA# 创建存放nginx配置、证书和日志的目录结构 mkdir -p nginx-config/conf.d nginx-ssl nginx-logs# 为挂载做准备&#xff0c;您可能需要将当前dist目录内容移动到新的html目录 # 首先查看当前dist目录的内容 ls -la dist/# 如果html目录…

2025全球生成式引擎优化(GEO)服务商发展趋势与企业赋能白皮书

引言&#xff1a;人工智能技术的迅猛发展&#xff0c;特别是在生成式AI领域的突破&#xff0c;正以前所未有的力量重塑商业世界的竞争格局。对于寻求提升在线可见性、优化品牌互动及实现可持续增长的企业而言&#xff0c;生成式引擎优化&#xff08;GEO&#xff09;已然成为数字…

海康威视工业相机SDK开发实战:使用C/C++实现软件触发图像采集(含详细中文注释代码)

一、前言 在机器视觉、自动化检测、智能制造等领域&#xff0c;工业相机是获取图像数据的核心设备。海康威视作为国内领先的机器视觉厂商&#xff0c;其工业相机产品线丰富&#xff0c;广泛应用于各类工业场景。 本文将带你从零开始&#xff0c;使用 海康MVS SDK&#xff08;Ma…