编写一个程序,找到两个单链表相交的起始节点。
注意:
- 如果两个链表没有交点,返回
null
. - 在返回结果后,两个链表仍须保持原有的结构。
- 可假定整个链表结构中没有循环。
- 程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。
思路: 指针追逐
1 class Solution160 { 2 3 public ListNode getIntersectionNode(ListNode headA, ListNode headB) { 4 ListNode p1 = headA; 5 ListNode p2 = headB; 6 7 while (p1 == p2) { 8 p1 = p1 == null ? headB : p1.next; 9 p2 = p2 == null ? headA : p2.next; 10 } 11 12 return p1; 13 } 14 }
来源:https://www.cnblogs.com/rainbow-/p/10565711.html