您的位置:首页 > 其它

Intersection of Two Linked Lists

2018-02-14 20:06 323 查看
PROBLEM: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.SOLVE:C++:
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB)
{
ListNode *p1 = headA;
ListNode *p2 = headB;
if (p1 == NULL || p2 == NULL) return NULL;
while (p1 != p2) {
p1 = (p1 == NULL? headB : p1->next);
p2 = (p2 == NULL? headA : p2->next);
}
return p1;
}
Python:
class Solution:
def getIntersectionNode(self, headA, headB):
if headA is None or headB is None:
return None
pa = headA
pb = headB
while pa is not pb:
pa = headB if pa is None else pa.next
pb = headA if pb is None else pb.next
return pa
解释:每一个指针都把两个链表跑一遍,最后结果要么都是指向NULL要么相同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: