160. Intersection of Two Linked Lists
Write a program to find the node at which the intersection of two singly linked lists begins.
For example, the following two linked lists:
A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3
begin to intersect at node c1.
编写一个程序来查找两个单链表相交的节点。如果两个链表没有交集,返回null。
链表在函数返回后必须保留其原有结构。
你可以假设整个链接结构中没有任何循环。
代码最好在O(n)的时间内运行,只使用O(1)内存。
如果确实了解题目的要求,这是一个相当简单的问题
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
ListNode *cur1 = headA, *cur2 = headB;
while(cur1 != cur2){
cur1 = cur1?cur1->next:headB;
cur2 = cur2?cur2->next:headA;
}
return cur1;
}