Intersection of Two Linked Lists
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.
Notes:
-If the two linked lists have no intersection at all, return null.
-The linked lists must retain their original structure after the function returns.
-You may assume there are no cycles anywhere in the entire linked structure.
-Your code should preferably run in O(n) time and use only O(1) memory.
思路
分别计算两个链表的长度l1和l2,若l1>l2,p=headA,q=headB,p先行l1-l2步,然后p和q同时移动。同理,l1<l2,p=headA,q=headB,q先行l2-l1步,然后p和q同时移动。返回p和q相等的结点。
解题
c++版
1 | /** |
python版
1 | # Definition for singly-linked list. |