题目
思路
- 假设有两个链表长度为a和b 其中包括公共节点及之后的长度为c
- 设立AB指针从headA和headB开始走,AB指针走完自己的链表后再去走另外一个链表,这样当A指针第二次走到公共节点时,A走的路程为a+b-c,B走的路程为b+a-c
- 这样两指针应该在node相遇,如果没相遇的话,说明没有公共节点,返回null
代码
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;
}