一些思路:#
- 快慢指针:fast 指针一次走两步,slow 指针一次走一步,那么当 fast 走完时,slow 指针会走到整条链表的一半位置
- 判断两链表交点:
- 设链表 A 相交前长度为 a
- 设链表 B 相交前长度为 b
- 相交长度为 c
- 因为有 a + c + b == b + c + a
- 所以让两个指针一起走,走到头就跳转到对方的头指针接着走
- 两个指针就会在交点处相遇
ListNode *fast = head,*slow =head;
while(fast != nullptr && fast->next != nullptr) {
fast = fast->next->next;
slow = slow->next;
}
java