其他分享
首页 > 其他分享> > 剑指 Offer II 023. 两个链表的第一个重合节点

剑指 Offer II 023. 两个链表的第一个重合节点

作者:互联网

题目:给定两个单链表的头节点 headA 和 headB ,请找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

思路:想办法把两个链表右对齐,这样从右往左最后一个相同节点就是相交节点了;
在A和B不相同的情况下A和B各自移动到下一节点,移动到空的时候变为另外一个链的头结点继续(也即在A链的末尾加上B链,B链的末尾加上A链,右端必然是对齐的);

public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode a = headA; 
        ListNode b = headB;
        while(a != b){
            a = (a != null) ? a.next: headB;
            b = (b != null) ? b.next: headA;
        }
        return a;
    }

标签:II,ListNode,Offer,链表,headB,headA,null,节点
来源: https://blog.csdn.net/qq_49005459/article/details/120573838