题目描述
编写一个程序,找到两个单链表相交的起始节点。
解题思路
以上面的图为例子,设相交的链表的长度为p,A链表的长度减去P得到a,B链表的长度减去P得到b。 由等式a+p+b=b+p+a;可写出代码
AC 代码
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
ListNode node1=headA;
ListNode node2=headB;
while(node1!=node2){
if(node1!=null){
node1=node1.next;
}else{
node1=headB;
}
if(node2!=null){
node2=node2.next;
}else{
node2=headA;
}
}
return node1;
}
}
总结
掌握链表的基本遍历,利用公式a+p+b=b+p+a