链表中环的入口结点

public ListNode EntryNodeOfLoop(ListNode pHead) {
    if(pHead==null || pHead.next==null){
        return null;
    }
    ListNode fast = pHead;
    ListNode slow = pHead;

    while(fast!=null && slow!=null){
        slow = slow.next;
        fast = fast.next;
        if(fast!=null){
            fast=fast.next;
        }
        if(fast==slow){
            break;
        }
    }

    //TODO:如果此时 fast==null 或许 fast.next==null 说明是不存在环的
    if(fast == null || fast.next == null){
        return null;
    }


    slow = pHead;
    while(slow!=fast){
        slow=slow.next;
        fast=fast.next;
    }
    return slow;
}

https://www.mianshi.onlinehttps://www.i9code.cn

本文由博客一文多发平台 OpenWrite 发布!

逃跑的眼镜_bvbEK5
7 声望0 粉丝