带环单链表+带环单链表

2023-11-04

带环单链表+带环单链表

  • 判断相交
    若共用一个环则相交,若不共用则不相交
    -求解相交点
    判断是否带环
    定义快慢指针,快指针一次走两步,慢指针一次走一步;
    若快指针走完,慢指针走到一半(奇数为中间的节点,偶数为中间的两个中的后一个节点)则无环。
    若有环,快指针必定先入环,当快指针在环中走n圈时(n = 0,1,2,3…)慢指针入环,由于快指针一次走二步慢指针走一步,在环中慢指针与快指针距离总减少一步,减少一个节点,当慢指针还未走完一圈时,快指针追上慢指针,两者相等,则必定有环。
    求带环指针的入口节点
    设链表头为PH ,快慢指针相遇处为PM,链表环入口点为i点;
    设x到指针口距离为L,快慢指针相遇出距离带环指针入口节点距离为X,环的周长为R;
    快指针走的步数:L+X+nR;(n=1,2,3,4…)(快指针追上慢指针最少走一圈);
    慢指针走的步数:L+X;
    由于 快指针的步数 == 2✖慢指针的步数
    所以 2(L+X) ==L+X+nR
    所以L == nR-X
    当n = 1 时 ,L== R-X;
    当n = 2 时 ,L==R+(R-X)

    当链表头指针PH从头一次走一步走到环指针的入口节点处时,快慢指针相遇点PM(求快慢指针相遇点时必须快指针走二步慢指针走一步)刚好也一次走一步走到环指针入口节点处,
    所以当PM=PH此节点就是入口点;
    当带环单链表与带环单链表不相交
    带环链表一的快慢指针相遇点与带环指针二的快慢指针相遇点没在同一个环中;
    判断方法:
    一个环的相遇点绕环一周判断是否出现与另一个环相遇点(快慢指针的交点)相同的节点,若不出现则不相交若出现则相交
    当带环单链表与带环单链表相交
    1.环外相交
    2.环内相交

    环外相交
    用快慢指针判断出带环
    法一将快慢指针相遇点当作这两个链表的结束点,判断链表一二长度,将长链表向前移动差值位,在将短链表从头移动,长链表从移动了差值位处移动,从当前位置开始检测,两个链表的节点是否相同,相同此节点位相交点,不同两链表各自向下移动一步继续检测;
    法二将链表一的快慢指针相遇点与链表一头部相连,则链表一成完整一个环,新链表二的入口点即为环外相交的交点
    求出交点再使链表一快慢指针相遇点☞指回快链表一慢指针相遇点的下一个节点。
    环内相交
    则有两个交点
    交点即为带环单链表一和带环单链表二的带环入口点,求出即可;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带环单链表+带环单链表 的相关文章

  • 02-线性结构3 Reversing Linked List(25 point(s)) 【链表】

    02 线性结构3 Reversing Linked List 25 point s Given a constant K and a singly linked list L you are supposed to reverse the
  • 14-数据结构-有序链表排序

    问题 给你一个链表 然后去进行排序 并输出 思路 排序时 类似于冒泡排序 这里则定义两个链表指针 一个指向第一位 一个指向第一位的后一位 由于需要排序的是数据 因此定义一个中间变量 int temp 用于后面的数据域比较排序 两层循环 外循
  • 数据结构之链表与线性表

    数据结构之链表与线性表 线性表 顺序线性表 顺序表 顺序线性表 使用数组实现 一组地址连续的存储单元 数组大小有两种方式指定 一是静态分配 二是动态扩展 优点 随机访问特性 查找O 1 时间 存储密度高 逻辑上相邻的元素 物理上也相邻 缺点
  • 一文弄懂循环链表、双向链表、静态链表

    循环链表 双向链表 静态链表 三遍定律 理解了单链表本文的理解易如反掌 单链表请点击这里 理解了单链表本文的理解易如反掌 单链表请点击这里 理解了单链表本文的理解易如反掌 单链表请点击这里 1 循环链表 将单链表中终端结点的指针端由空指针改
  • 剑指offer(16)——C++实现两个链表合并

    题目 输入两个单调递增的链表 输出两个链表合成后的链表 当然我们需要合成后的链表满足单调不减规则 考察点 链表 解题思路 递归实现 比较每个节点大小 将较小的放入新链表 非递归 原理同上 完整代码 16 合并两个链表 include
  • 数据结构 严薇敏 顺序表的实现(增 删 改)及其使用方法详解

    时间复杂度 数据结构 时间复杂度和空间复杂度 目录 1 线性表 2 顺序表 2 1概念及结构 2 2 接口实现 SeqList h SeqList c 2 2 1初始化链表以及销毁链表的实现 初始化顺序表 销毁顺序表 2 2 2查找元素前驱
  • 6-2 单链表结点删除(20 分)_单链表的删除节点的两种方式——还是双指针和链表覆盖好用

    6 2 单链表结点删除 20 分 本题要求实现两个函数 分别将读入的数据存储为单链表 将链表中所有存储了某给定值的结点删除 链表结点定义如下 struct ListNode int data ListNode next 函数接口定义 str
  • leetcode算法面试题:对称二叉树、对链表进行插入排序、多数元素

    对称二叉树问题 给定一个二叉树 检查它是否是镜像对称的 例如 二叉树 1 2 2 3 4 4 3 是对称的 1 2 2 3 4 4 3 但是下面这个 1 2 2 null 3 null 3 则不是镜像对称的 1 2 2 3 3 参考答案 c
  • leetcode 142.环形链表2

    leetcode 142 环形链表2 给定一个链表的头节点 head 返回链表开始入环的第一个节点 如果链表无环 则返回 null 如果链表中有某个节点 可以通过连续跟踪 next 指针再次到达 则链表中存在环 为了表示给定链表中的环 评测
  • 【数据结构】复杂度

    博客主页 小王又困了 系列专栏 数据结构 人之为学 不日近则日退 感谢大家点赞 收藏 评论 目录 一 什么是数据结构 二 什么是算法 三 算法的效率 四 时间复杂度 4 1大O渐进表示法 4 2常见时间复杂度计算举例 4 3例题 消失的数字
  • 剑指Offer - 面试题25:合并俩个排序的链表

    题目 输入俩个递增排序的链表 合并这俩个链表并使新链表中的节点仍然是递增序列 例如下图链表1和链表2 合并后的升序链表为链表3 链表节点定义如下 typedef int TElemType 链表节点值的数据类型 struct ListNod
  • 夯实C++基础之刷题:链表——3合并两个有序列表

    题目 解题 递归和迭代 我的理解 递归是自己调用自己 迭代是按思路往下走 1 递归 class Solution public ListNode mergeTwoLists ListNode list1 ListNode list2 递归
  • 算法篇--链表求和

    问题描述 给两个链表 每个链表为一个整数的倒序 如下 1 2 3 4 5 7 9 两个数字的结果 321 9754 10075 那么 请得到 链表的结果为 5 7 0 0 1 思考 思路总结 两个链表肯定有一个最长的 等于情况取哪个都行 所
  • 华为OD机试真题-最长子字符串的长度(一)-2023年OD统一考试(C卷)

    题目描述 给你一个字符串 s 字符串s首尾相连成一个环形 请你在环中找出 o 字符出现了偶数次最长子字符串的长度 输入描述 输入是一串小写字母组成的字符串 输出描述 输出是一个整数 补充说明 1 lt s length lt 5 x 10
  • 算法题-简单系列-04-链表中倒数最后k个结点

    文章目录 1 题目 1 1 快慢指针 1 题目 输入一个长度为 n 的链表 设链表中的元素的值为 ai 返回该链表中倒数第k个节点 如果该链表长度小于k 请返回一个长度为 0 的链表 1 1 快慢指针 代码中的类名 方法名 参数名已经指定
  • 剑指 Offer(第2版)面试题 35:复杂链表的复制

    剑指 Offer 第2版 面试题 35 复杂链表的复制 剑指 Offer 第2版 面试题 35 复杂链表的复制 解法1 模拟 剑指 Offer 第2版 面试题 35 复杂链表的复制 题目来源 48 复杂链表的复刻 解法1 模拟 算法 复制原
  • 《LeetCode力扣练习》代码随想录——双指针法(反转链表---Java)

    LeetCode力扣练习 代码随想录 双指针法 反转链表 Java 刷题思路来源于 代码随想录 206 反转链表 双指针 Definition for singly linked list public class ListNode int
  • 链表的中间节点

    链表的中间节点 力扣 LeetCode 官网 全球极客挚爱的技术成长平台 备战技术面试 力扣提供海量技术面试资源 帮助你高效提升编程技能 轻松拿下世界 IT 名企 Dream Offer https leetcode cn problems
  • 顺序表和链表基础

    定义动态的顺序表 typedef int SLDataType typedef struct Seqlist SLDataType array size t size size t capacity Seqlist 在顺序表中插入数据 bo
  • 「优选算法刷题」:移动零

    嗨 这个假期罗根开始接触了算法 在为今年的蓝桥杯做准备 所以 开个新专栏 记录记录自己做算法题时的心得 一 题目 给定一个数组 nums 编写一个函数将所有 0 移动到数组的末尾 同时保持非零元素的相对顺序 请注意 必须在不复制数组的情况下

随机推荐

  • 数字模拟转换DAC

    数字模拟转换DAC 1 局限性 只有大容量的STM32F10x才具有DAC功能 2 数模转换原理 STM32的DAC模块 数字 模拟转换模块 是12位数字输入 电压输出型的DAC DAC可以配置为8位或12位模式 也可以与DMA控制器配合使
  • 【计算机网络】我与张三的 DNS 解析过程,浏览器中输入URL 回车后发生了什么

    视频解析 方便大家理解 我在 b 站发布了一期视频 欢迎大家查收 计网 浏览器输入url按下回车后发生了什么 计算机网络DNS工作流程详解 解析 hello 家好 我是 up主黎明 菜 今早我正打开b站刷剧 突然想到了 个问题 我们在浏览器
  • 一名系统研究者的攀登之路-陈海波-

    陈海波 原复旦大学Pa ra lle l Proc e s s ing Institute实验室的牛人 在sosp EuroSys等世界最顶级会议上发表过论文的大牛人 不过 现在被上交软件学院给挖走了 哈哈 1 引言 写好计算机系统领域的研
  • Mysql用同一张表查询的结果删除此表的数据报错

    DELETE FROM study name WHERE name id IN SELECT name id FROM study name WHERE name id 20221209 执行会报错如下 DELETE 0 row s 0 0
  • LaTex学习笔记(三):矩阵的输入

    矩阵的输入类似于表格 在latex中输入矩阵有多种方式 1 left begin array clr 4343 434 235 45 3232 34 56 232 3467 end array right 2 begin bmatrix 不
  • Excel 两列数据中相同的数据进行同行显示

    一 要求 假设您有两个列 分别是A列和B列 需要在C列中找出A列对应的B列的值 二 方案 方法1 寻常思路 凸显重复项 对A列单独进行筛选 按颜色进行排序 然后升序 对B列重复上述操作即可 方法2 两个公式 VLOOKUP 纵向查找函数 语
  • HDFS操作

    1 使用oiv命令查看hadoop 的镜像文件 hadoop s201 hadoop dfs name current hdfs oiv Usage bin hdfs oiv OPTIONS i INPUTFILE o OUTPUTFILE
  • Python处理缺失数据

    目录 1 缺失原因 2 缺失类型 3 处理方法 3 1 删除 3 1 1 统计每列缺失值的个数 3 1 2 直接删除含有缺失值的行 3 1 3 直接删除含有缺失值的列 3 1 4 只删除全是缺失值的行 3 1 5 保留至少有4个非缺失值的行
  • 51单片机(STC)串口无阻塞发送函数

    目录 一 简介 1 1 开发环境 1 2 功能描述 二 串口程序 2 1 串口配置 2 2 变量定义 2 3 中断函数 2 4 发送函数 一 简介 1 1 开发环境 KeilC51 单片机型号STC15F2K60S2 1 2 功能描述 使用
  • Hutool导出Excel,导多个Sheet页

    重要方法 指定要写出的 Sheet 页 bigWriter setSheet sheet getSheetName 工具类 public class HuExcelUtils 导出多个 Sheet 页 param response para
  • 零售业未来如何破局?抓住数智化经营的两把利刃!

    导语 数字化转型浪潮席卷了千行百业 有人从中看出了汹涌的挑战 也有人从中嗅出了美妙的商机 对于零售企业而言 当前数智经营进入了哪个阶段 未来的破局之道又在何方 我们邀请到了广东省 CIO 协会消费品与零售行业分会会长 腾讯云 TVP 行业大
  • Unity3D

    Cheer Up 游戏说明 除了音效 游戏地图上的元素有 草丛 玩家可以躲进去 敌人攻击不到 河流 双方都过不去 但是子弹可以穿过 铁墙 坦克和子弹都过不去 砖墙 一发子弹摧毁后坦克可以过去 空气墙 围在地图周围 防止出界 敌方大坦克 打两
  • 介绍几款Python科学计算发行版

    目前比较流行的Python科学计算发行版 主要有这么几个 Python x y GUI基于PyQt 曾经是功能最全也是最强大的 而且是Windows系统中科学免费Python发行版的不二选择 不过今时已不同往昔 PythonXY里面的许多包
  • 在Excel中使用SQL

    说明 Excel中许多函数虽然能代替SQL的功能 但是比起SQL 还是有一些逊色 特意做了这个教程 主要有 分组统计 Excel中用数据透视表 SQL中用Group By 去重 Excel中可以用条件标识功能 开始 gt 条件标识 SQL中
  • 无闪视频风格切换新思路

    近段时间 视频风格切换应用的热度逐渐上升 包括已经成熟应用的gen 还有Ebsynth等 但是这些视频的切换都有一个通病就是视频会出现闪烁 导致最终的切换效果不佳 最近 有开源项目CoDeF提供了一种新的思路来解决这种闪烁的问题 从已经的公
  • ubuntu下使用Eclipse搭建Hadoop开发环境

    在ubuntu下使用Eclipse搭建Hadoop开发环境 一 安装准备 1 JDK版本 jdk1 7 0 jdk 7 linux i586 tar gz 2 hadoop版本 hadoop 1 1 1 hadoop 1 1 1 tar g
  • Milvus2.0

    一 介绍 项目官网 Milvus Open Source Vector Database built for scalable similarity searchhttps milvus io cn 项目文档 关于 Milvus Milvu
  • 页面禁止鼠标右键点击

    把这段代码放到head里就OK了
  • ChatGPT+Midjourney可量产“宫崎骏”,AI将会让多少设计师失业?

    最近 大家都被横空出世的ChatGPT惊艳到了 瞬间在全世界爆红的ChatGPT 除了陪聊 它还能写论文 写小说 写代码 编剧本 几乎无所不能 ChatGPT让科技巨头谷歌发出了红色警报 一夜之间全世界的打工人们也都慌了 我们的很多工作似乎
  • 带环单链表+带环单链表

    带环单链表 带环单链表 判断相交 若共用一个环则相交 若不共用则不相交 求解相交点 判断是否带环 定义快慢指针 快指针一次走两步 慢指针一次走一步 若快指针走完 慢指针走到一半 奇数为中间的节点 偶数为中间的两个中的后一个节点 则无环 若有