题目

输入两个链表,找出它们的第一个公共节点。

题解

将listA 和 listB 接起一起生成2个新的链表 listA-listB 和listB-listA,会发现这2个链表的长度一样,并且如果listA和listB相交的话,listA-listB 和 listB-listA 2个链表最后部分必然一样。双指针对比listA-listB 和 listB-listA的节点即可。

code

  1. if not headA or not headB:
  2. return None
  3. ab,ba = headA, headB #
  4. while pa != pb:
  5. ab = ab.next if ab else headB
  6. ba = ba.next if ba else headA
  7. return ab