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

相交链表的解答

这题要求判断两个链表是否相交,相交就返回相交的节点,不想交就返回NULL

思路如下:

1.先判断两个链表是否相交,定义两个指针分别指向两个链表,遍历链表,这个时候两个指针分别指向各自链表的尾结点,进行比较,如果不相同就是不想交,返回NULL,相同就是相交

2.两个链表是不一样长的,那我们可以通过第一步的循环得到两个链表的长度,这个时候再定义两个指针,一个指向长链表,一个指向短链表

3.计算长短链表的距离差,让指向长链表的节点先走,达到长短链表的指针在同一起跑线的效果

4.这个时候再进行比较,遍历整个链表,如果不相同,就继续往后移动,如果相同就停止循环

5.这个时候长短指针指向相同的节点,所以随便返回一个即可

代码如下:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {struct ListNode* curA=headA,*curB=headB;//定义两个指针都指向头结点//先判断链表是否相交int lenA=1;//分别计算长度int lenB=1;//分别计算长度while(curA->next){curA=curA->next;lenA++;}//找到第一个链表的尾结点while(curB->next){curB=curB->next;lenB++;}//找到第二个链表的尾结点if(curA!=curB)//尾结点不相同,两个链表没有相交,返回NULL{return NULL;}//走到这里已经表示两个链表肯定会相交//通过lenA和lenB也已经知道两个链表分别含有的节点个数//长的先走,然后一起走int gap = abs(lenA-lenB);//定义两个指针,一个指向长链表,一个指向短链表struct ListNode* longlist=headA,*shortlist=headB;if(lenB>lenA){longlist=headB;shortlist=headA;}//不知道那个链表长,但是longlist一定指向长链表,shortlist一定指向短链表while(gap--)//通过循环,这个时候让长短指针指向同一起跑线{longlist=longlist->next;}while(longlist!=shortlist)//比较,如果不相同就往后{longlist=longlist->next;shortlist=shortlist->next;}//这时候已经相同,那随便返回一个即可return longlist;
}

相关文章:

  • SONiC-OTN代码详解(具体内容待续)
  • leetcode:最小覆盖字符串
  • LeetCode 1007. 行相等的最少多米诺旋转 题解
  • php study 网站出现404 - Page Not Found 未找到
  • 深度学习中的数据增强:提升食物图像分类模型性能的关键策略
  • VTK入门指南
  • [三分钟学算法]分治-快速排序-最小的K个数:设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。
  • 【数据结构】稀疏矩阵的快速转置
  • 架构思维:异构数据的同步一致性方案
  • P1802 5 倍经验日
  • 递归算法详解(Java 实现):从原理到高阶应用
  • 时序分解 | Matlab基于WOA-MVMD鲸鱼算法优化多元变分模态分解
  • 机器学习实操 第二部分 神经网路和深度学习 第11章 训练深度神经网络
  • GenCLS++:通过联合优化SFT和RL,提升生成式大模型的分类效果
  • 人工智能数学基础(八)—— 最优化理论
  • 生物化学笔记:神经生物学概论09 小脑的运动学习 基底神经节的结构与功能
  • C++八股--6--mysql 日志与并发控制
  • 永磁同步电机无速度算法--基于ESO-PLL的永磁同步电机无位置传感器控制
  • 2025年PMP 学习二
  • 第一章 - 质量
  • 普京称俄中关系对维护世界稳定具有战略意义
  • 澎湃读报丨央媒头版五四青年节集中刊文:以青春之我,赴时代之约
  • 日产淡水10万吨、全自动运行,万华化学蓬莱海水淡化厂投产
  • 云南石屏举办茶文化交流活动:弘扬企业家精神,激发市场活力
  • “国宝探索记”增强亲子连接,国宝成了生活想象的一部分
  • 2025年第一批“闯中人”已经准备好了