【单链表算法实战】解锁数据结构核心谜题——相交链表

news2025/1/27 3:52:08

题目如下:

在这里插入图片描述

解题过程如下:

相交链表只可以在中间任意位置/头/尾结点相交,如下图:

在这里插入图片描述

一个next指针只能指向一块地址,所以不会出现这种情况:
在这里插入图片描述

在返回相交链表的起始结点之前先要判断两个链表是否相交,分析下列两种方法是否可行?

  1. 遍历两个链表,判断结点(地址)是否相同。如果像示例1一样,两个链表的长度不等,代码运行结果就是两个链表不会相交,这与事实恰恰相反。所以这个方法不可行:
    在这里插入图片描述

  2. 看两个链表的尾结点(地址)是否相同。参考相交链表的三种情况,尾结点相同那么两个链表就一定相交。

那么怎么返回相交链表的起始结点呢?

思路:求两个链表的长度,长链表先走长度差步,长短链表遍历比较结点的地址是否相同。

完整代码如下:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
typedef struct ListNode ListNode;
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {
    //求两个链表的长度
    ListNode* pa = headA;
    ListNode* pb = headB;
    int sizeA = 0;
    int sizeB = 0;
    while (pa)
    {
        ++sizeA;
        pa = pa->next;
    }
    while (pb)
    {
        ++sizeB;
        pb = pb->next;
    }
    //长链表先走长度差(gap)步
    int gap = abs(sizeA - sizeB);
    ListNode* shortList = headA;
    ListNode* longList = headB;//假设B是长链表
    if (sizeA > sizeB)
    {
        shortList = headB;
        longList = headA;
    }
    while (gap--)
    {
        longList = longList->next;
    }
    //长短链表遍历结点的地址是否相同
    while (longList) //等同于shortList != NULL
    {
        if (longList == shortList)
            return longList;
        longList = longList->next;
        shortList = shortList->next;
    }
    return NULL;
}

abs()函数用于求绝对值:
在这里插入图片描述

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

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

相关文章

HTTP 配置与应用(不同网段)

想做一个自己学习的有关的csdn账号,努力奋斗......会更新我计算机网络实验课程的所有内容,还有其他的学习知识^_^,为自己巩固一下所学知识,下次更新校园网设计。 我是一个萌新小白,有误地方请大家指正,谢谢…

深度学习 Pytorch 单层神经网络

神经网络是模仿人类大脑结构所构建的算法,在人脑里,我们有轴突连接神经元,在算法中,我们用圆表示神经元,用线表示神经元之间的连接,数据从神经网络的左侧输入,让神经元处理之后,从右…

政安晨的AI大模型训练实践三:熟悉一下LF训练模型的WebUI

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 目录 启动WebUI 微调模型 LLaMA-Factory 支持通过 WebUI 零代码微调大语言模型。 启动Web…

Flink Gauss CDC:深度剖析存量与增量同步的创新设计

目录 设计思路 1.为什么不直接用FlinkCDC要重写Flink Gauss CDC 2.存量同步的逻辑是什么 2.1、单主键的切片策略是什么 2.2、​​​​​复合主键作切片,怎么保证扫描到所有的数据 3、增量同步的逻辑是什么 4、存量同步结束之后如何无缝衔接增量同步 5、下游数据如何落…

【深入理解SpringCloud微服务】Sentinel规则持久化实战

Sentinel规则持久化实战 Sentinel规则推送模式原始模式pull(拉模式)push(推模式) 实现拉模式实现推模式 Sentinel规则推送模式 原始模式 原始模式由Sentinel控制台直接推送规则到Sentinel客户端,Sentinel客户端将规则…

PCIE模式配置

对于VU系列FPGA,当DMA/Bridge Subsystem for PCI Express IP配置为Bridge模式时,等同于K7系列中的AXI Memory Mapped To PCI Express IP。

【由浅入深认识Maven】第2部分 maven依赖管理与仓库机制

文章目录 第二篇:Maven依赖管理与仓库机制一、前言二、依赖管理基础1.依赖声明2. 依赖范围(Scope)3. 依赖冲突与排除 三、Maven的仓库机制1. 本地仓库2. 中央仓库3. 远程仓库 四、 版本管理策略1. 固定版本2. 版本范围 五、 总结 第二篇&…

备赛蓝桥杯之第十五届职业院校组省赛第一题:智能停车系统

提示:本篇文章仅仅是作者自己目前在备赛蓝桥杯中,自己学习与刷题的学习笔记,写的不好,欢迎大家批评与建议 由于个别题目代码量与题目量偏大,请大家自己去蓝桥杯官网【连接高校和企业 - 蓝桥云课】去寻找原题&#xff0…

力扣 Hot 100 题解 (js版)更新ing

🚩哈希表 ✅ 1. 两数之和 Code: 暴力法 复杂度分析: 时间复杂度: ∗ O ( N 2 ) ∗ *O(N^2)* ∗O(N2)∗,其中 N 是数组中的元素数量。最坏情况下数组中任意两个数都要被匹配一次。空间复杂度:O(1)。 /…

DeepSeek-R1:性能对标 OpenAI,开源助力 AI 生态发展

DeepSeek-R1:性能对标 OpenAI,开源助力 AI 生态发展 在人工智能领域,大模型的竞争一直备受关注。最近,DeepSeek 团队发布了 DeepSeek-R1 模型,并开源了模型权重,这一举动无疑为 AI 领域带来了新的活力。今…

CY T 4 BB 5 CEB Q 1 A EE GS MCAL配置 - MCU组件

1、ResourceM 配置 选择芯片信号: 2、MCU 配置 2.1 General配置 1) McuDevErrorDetect: - 启用或禁用MCU驱动程序模块的开发错误通知功能。 - 注意:采用DET错误检测机制作为安全机制(故障检测)时,不能禁用开发错误检测。2) McuGetRamStateApi - enable/disable th…

校园商铺管理系统设计与实现(代码+数据库+LW)

摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自…

【JavaWeb学习Day13】

Tlias智能学习系统 需求: 部门管理:查询、新增、修改、删除 员工管理:查询、新增、修改、删除和文件上传 报表统计 登录认证 日志管理 班级、学员管理(实战内容) 部门管理: 01准备工作 开发规范-…

springboot使用tomcat浅析

springboot使用tomcat浅析 关于外部tomcat maven pom配置 // 打包时jar包改为war包 <packaging>war</packaging>// 内嵌的tomcat的scope标签影响范围设置为provided&#xff0c;只在编译和测试时有效&#xff0c;打包时不带入 <dependency><groupId>…

如何使用CRM数据分析优化销售和客户关系?

嘿&#xff0c;大家好&#xff01;你有没有想过为什么有些公司在市场上如鱼得水&#xff0c;而另一些却在苦苦挣扎&#xff1f;答案可能就藏在他们的销售策略和客户关系管理&#xff08;CRM&#xff09;系统里。今天我们要聊的就是如何通过有效的 CRM 数据分析来提升你的销售额…

Qt 控件与布局管理

1. Qt 控件的父子继承关系 在 Qt 中&#xff0c;继承自 QWidget 的类&#xff0c;通常会在构造函数中接收一个 parent 参数。 这个参数用于指定当前空间的父控件&#xff0c;从而建立控件间的父子关系。 当一个控件被设置为另一控件的子控件时&#xff0c;它会自动成为该父控…

电力场效应晶体管(电力 MOSFET),全控型器件

电力场效应晶体管&#xff08;Power MOSFET&#xff09;属于全控型器件是一种电压触发的电力电子器件&#xff0c;一种载流子导电&#xff08;单极性器件&#xff09;一个器件是由一个个小的mosfet组成以下是相关介绍&#xff1a; 工作原理&#xff08;栅极电压控制漏极电流&a…

一文讲解Java中的重载、重写及里氏替换原则

提到重载和重写&#xff0c;Java小白应该都不陌生&#xff0c;接下来就通过这篇文章来一起回顾复习下吧&#xff01; 重载和重写有什么区别呢&#xff1f; 如果一个类有多个名字相同但参数不同的方法&#xff0c;我们通常称这些方法为方法重载Overload。如果方法的功能是一样…

Pandas基础02(DataFrame创建/索引/切片/属性/方法/层次化索引)

DataFrame数据结构 DataFrame 是一个二维表格的数据结构&#xff0c;类似于数据库中的表格或 Excel 工作表。它由多个 Series 组成&#xff0c;每个 Series 共享相同的索引。DataFrame 可以看作是具有列名和行索引的二维数组。设计初衷是将Series的使用场景从一维拓展到多维。…

Meta-CoT:通过元链式思考增强大型语言模型的推理能力

大型语言模型&#xff08;LLMs&#xff09;在处理复杂推理任务时面临挑战&#xff0c;这突显了其在模拟人类认知中的不足。尽管 LLMs 擅长生成连贯文本和解决简单问题&#xff0c;但在需要逻辑推理、迭代方法和结果验证的复杂任务&#xff08;如高级数学问题和抽象问题解决&…