안전 요약을 증명하기 위해 제공

링 포함하는 경우, 엔트리 링 노드리스트, 그렇지 않으면, 출력 널을 찾아 상기 링크리스트로.

public class Solution {
    public ListNode EntryNodeOfLoop(ListNode pHead) {
        if(pHead == null) return null;
        ListNode f = pHead;
        ListNode s = pHead;
        //判断是否有环
        boolean hasLoop = false;
        while(s != null && f.next != null){
            f = f.next.next;
            s = s.next;
            if(f == s){
                hasLoop = true;
                break;
            }
        }
        if(!hasLoop) return null;
        //求得环的长度
        f = f.next.next;
        s = s.next;
        int length = 1;
        while(f != s){
            f = f.next.next;
            s = s.next;
            length++;
        }
        //找到环的入口
        f = s = pHead;
        for (int i = 0; i < length; i++)
            f = f.next;
        while (f != s){
            f = f.next;
            s = s.next;
        }
        return f;
    }

추천

출처www.cnblogs.com/whteway/p/12070409.html