一:题目
二:思路讲解
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都可以