-
代码:
class Solution(object): def getIntersectionNode(self, headA, headB): ha, hb = headA, headB while ha != hb: ha = ha.next if ha else headB hb = hb.next if hb else headA return ha
-
思路:
我们通常做这种题的思路是设定两个指针分别指向两个链表头部,一起向前走直到其中一个到达末端,另一个与末端距离则是两链表的 长度差。再通过长链表指针先走的方式消除长度差,最终两链表即可同时走到相交点。
但这里可以同时将链表A和链表B拼接起来,让两个指针分别同时去遍历A+B和B+A,这样当有相交的尾巴时,总会相同出现PA = PB的时候。
-
复杂度分析:
-
时间复杂度 : O(m+n)。
-
空间复杂度 : O(1)。
-