给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。
分析:这道题若是从头一个一个进行比对,那么复杂度必然会很高,所以不能这样,那么要想到,若是有交点,那么从交点向后肯定都是相同的,那么不如先把尾部对齐,然后再把长度调整一致,同步进行判断!
参考代码:
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
int Alength =0,Blength=0;
ListNode A = headA , B = headB;
while(A!=null){
A=A.next;
Alength++;
}
while(B!=null){
B=B.next;
Blength++;
}
A = headA ; B = headB;
if(Alength>Blength){
while(Alength!=Blength){
A=A.next;
Alength—;
}
}else if(Alength
B=B.next;
Blength—;
}
}
while(A!=null&&B!=null){
if(A==B) return A;
A=A.next;
B=B.next;
}
return null;
}
