力扣经典题目之->相交链表(返回相交链表的公共lesshead->next结点)的实现与讲解

一:题目

二:思路讲解

1:应该是先判断是否相交。

2:相交就计算出相交前的两条链表的长度差距

3:让长的那一条链表先走长度的差距,这样会距离交点的距离相等,然后再对两条链表的节点对应着去比较。

第一步:判断是否相交

两个链表如果相交,他们的尾节点一定相同,因为,一但有一个相交节点,比如图中的c1,那之后的链表一定是一致的,因为一个节点只能指向一个节点,所以尾节点相同则两个链表一定相交! 

第二步:计算长度差距,并让长的链表往后走差距长度就一样长了

因为:长度的差距一定是在相交节点之前就决定了的,因为相交节点之后的链表完全相同。

 代码展示:

注意的点:

1:lenA和lenB为什么初始1,因为我们后面要让两个尾节点进行对比,既然我们要尾节点,那我们计数的时候,就要让指针停在尾节点上,但是这样尾节点无法计入个数,所以我们先给1

也可以lenA和lenB为什么初始0,后面的循环计数条件就是while(curA)和while(curB)

2:abs函数为计算两个值的差值的绝对值

3:进行尾节点的比较,一直最后的节点比较,比较的都是节点本身,而不是节点的值,地址相同才代表是同一个节点!

3:longlist  就是我们希望的长的链表, shortlist就是我们希望的短的链表,一个简单的if语句可以让longlist是长链表,shortlist是短链表。

4:最后出循环的时候,代表两个节点相同了,这时候返回longlist和shortlist都可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值