力扣160.相交链表

  • 如果两个链表有交点的话肯定有一段公共的节点链,我们设为c,那么从两个头结点到交点分别为a,b 。那么两个节点到最后走到null分别走了a + c和b + c ,只需要在遍历到最后null去另外一个头结点开始遍历,这样如果没有节点最后走过的路程就都是2*c + a + b ,两个节点相遇之后就走过了 c + a + b,最后q一定是等于p的,如果有交点就返回交点,如果没有就是为空返回
public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode p = headA;
        ListNode q = headB;
        while (q != p) {
            p = (p == null ? headB : p.next);
            q = (q == null ? headA : q.next);
        }
        return q;
    }
}
posted @ 2026-01-07 10:21  Huangyien  阅读(5)  评论(0)    收藏  举报