两链表相交

📅 发布时间:2026/7/11 22:41:38 👁️ 浏览次数:
两链表相交
要求给你两个单链表的头节点 headA 和 headB 请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点返回 null 。图示两个链表在节点 c1 开始相交题目数据 保证 整个链式结构中不存在环。注意函数返回结果后链表必须 保持其原始结构 。思路两个指针分别从两个链表头开始遍历。当某个指针走到链表末尾时将其重定向到另一个链表的头部继续走。这样两个指针最终会在相交节点相遇或者同时到达末尾null。原理是设链表A独立部分长度为a链表B独立部分长度为b公共部分长度为c。指针pA走过的路程为acb指针pB走过的路程为bca两者相等因此会在交点相遇。若无交点则c0两者都走完ab后同时变为null。题解publicListNodegetIntersectionNode(ListNodeheadA,ListNodeheadB){if(headAnull||headBnull){returnnull;}ListNodepAheadA;ListNodepBheadB;while(pA!pB){pA(pAnull)?headB:pA.next;pB(pBnull)?headA:pB.next;}returnpA;}