回答

分析

最优解法:双指针遍历 A+B 与 B+A

  1. function getIntersectionNode(
  2. headA: ListNode | null,
  3. headB: ListNode | null
  4. ): ListNode | null {
  5. // 双指针法,A指针遍历A+B,B指针遍历B+A
  6. let pA = headA;
  7. let pB = headB;
  8. while (pA !== pB) {
  9. // 注意遍历A结束有pA=undefined的时候
  10. // 这样在遍历到A+B结束时,pA===pB===undefined
  11. pB = pB ? pB.next : headA;
  12. pA = pA ? pA.next : headB;
  13. }
  14. return pA;
  15. }

参考资料

    1. 相交链表 - 力扣(LeetCode)[https://leetcode-cn.com/problems/intersection-of-two-linked-lists/]