美文网首页
160. 相交链表

160. 相交链表

作者: 名字是乱打的 | 来源:发表于2021-11-02 22:40 被阅读0次

    思路:

    可以直接看图,两个指针分别从A,B开始走,走到头后走对方的路,那么两者第一次相等的时候要么是有公共结点然后相较于共同结点上,要么没有相遇点最后都为null

    这是为啥?
    因为我们让两个指针走到头后交换线路继续走,其实两者到相遇的时候走的路是一样长的,比如题目中给的相交图

    • 从a出发到相交走的路为 a1,a2,c1,c2,c3,b1,b2,b3,c1
    • 从b出发到相交走的路为b1,b2,b3 ,c1,c2,c3,a1,a2,c1

    代码:

     public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
            if (headA==null||headB==null){
                return null;
            }
    
            ListNode startA=headA,startB=headB;
            while (startA!=startB){
                startA=startA==null?headB:startA.next;
                startB=startB==null?headA:startB.next;
            }
            return startA;
        }
    

    相关文章

      网友评论

          本文标题:160. 相交链表

          本文链接:https://www.haomeiwen.com/subject/vjofzltx.html