概述
问题:给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点,如果两个链表不存在相交节点,返回null。
解题思路:
1、首先我们求出两个链表的表长和长度差n
2、我们再找到较长链表的第n个节点
3、从较长链表第n个节点和较短链表的第一个节点等速遍及
4、如果存在相交节点则找到,如果遍历到最后一个节点都没有找到则没有相交节点。
代码实现
getSameNode(ListNode headA, ListNode headB){
pA = headA;
pB = headB;
int lA = len(pA);
int lB = len(pB);
n = (lA > lB) ? lA - lB : lB - lA;
if(lA > lB){
while(n>0){
pA = pA.next;
n--;
}
}else{
while(n>0){
pB = pB.next;
n--;
}
}
while(pA != null && pB != null){
if(pA == pB) return pA;
pA = pA.next;
pB = pB.next;
}
return null;
}
最后
以上就是落寞向日葵为你收集整理的力扣---找到两个链表的交点的全部内容,希望文章能够帮你解决力扣---找到两个链表的交点所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复