leetcode 相交链表_链表

 

 

这是一道easy题,但是思路还是有点意思,需要判断是否相交我们下意识的能想到我们需要用到双指针,但如何让两个指针能够在链表的相交位置上相遇?我们可以同时让两个指针两个链表的头结点开始遍历,如果到达了链表的尾部则跳到另一个链表的头结点,最终通过返回两个链表相同到达的节点。(如果有相交就是相交节点,如果没有相交节点则返回null)

    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode p1=headA;
        ListNode p2=headB;
        int flag1=0,flag2=0;
        while(p1!=p2)
        {
            p1=p1.next;
            if(p1==null&&flag1==0)
            {
                p1=headB;
                flag1=1;
            }
            p2=p2.next;
             if(p2==null&&flag2==0)
            {
                p2=headA;
                flag2=1;
            }

        }
        return p1;
     }

leetcode 相交链表_两个指针_02