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

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

题目如下:

在这里插入图片描述

解题过程如下:

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

在这里插入图片描述

一个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.lryc.cn/news/526922.html

相关文章:

  • Crewai框架添加日志功能
  • 【2025年数学建模美赛E题】(农业生态系统)完整解析+模型代码+论文
  • Linux(Centos、Ubuntu) 系统安装jenkins服务
  • 2013年蓝桥杯第四届CC++大学B组真题及代码
  • TDengine 做为 FLINK 数据源技术参考手册
  • 21.2、网络设备安全机制与实现技术
  • 数据结构:二叉树—面试题(二)
  • OFD、PDF 电子签章系统处理流程
  • 分布式微服务系统简述
  • 【Linux】列出所有连接的 WiFi 网络的密码
  • 电脑无法开机,重装系统后没有驱动且驱动安装失败
  • 基于SpringBoot格式化实体的时间类型以及静态注入依赖
  • 技术总结:FPGA基于GTX+RIFFA架构实现多功能SDI视频转PCIE采集卡设计方案
  • Flink读写Kafka(Table API)
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.2 ndarray解剖课:多维数组的底层实现
  • 冯诺依曼架构和哈佛架构的主要区别?
  • Gurobi基础语法之字典
  • ceph新增节点,OSD设备,标签管理(二)
  • 利用metaGPT多智能体框架实现智能体-2
  • Hadoop 与 Spark:大数据处理的比较
  • Django 日志配置实战指南
  • 传输层协议TCP与UDP:深入解析与对比
  • doris:JSON导入数据
  • Ubuntu18.04 搭建DHCP服务器
  • Spring Boot 邂逅Netty:构建高性能网络应用的奇妙之旅
  • 【云安全】云原生-Docker(五)容器逃逸之漏洞利用
  • 九、CSS工程化方案
  • gradle创建springboot单项目和多模块项目
  • Vue实现div滚动,并且支持top动态滚动
  • Elasticsearch 中,分片(Shards)数量上限?副本的数量?