输入两个链表,找出它们的第一个公共节点。
如下面的两个链表:
在节点 c1 开始相交。
/*
链表中,a.next为a的下一个
链表中,若a为null,则整个链表已经遍历到了尾端
如何做?
让A和B遍历相同的路程,都走一个分别的头、公共的尾巴,这样子二者相等时候一定是第一个公共节点。
如题述的图片,A跑完5个,B跑到公共的4位置。A再从B的headB跑,B也是跑到最后从headA开始,由于二者分别跑的是公共尾巴一次,各自头部一次,当节点相等时,即为8那个节点,a与b相遇
*/
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
ListNode a = headA;
ListNode b = headB;
while(a != b) {
a = a != null ? a.next:headB;
b = b != null ? b.next:headA;
}
return a;
}
}