一开始感觉用双指针,但是没想到第一次相遇,不是在环的入口结点,所以一直出问题。最后看题解后,得出双指针的解法如下:

class Solution {
public:
    ListNode* EntryNodeOfLoop(ListNode* pHead) {
        if(pHead==NULL) return NULL; 
        ListNode* slow=pHead;
        ListNode* fast=pHead;
        while(fast!=NULL && fast->next!=NULL) { 
            fast=fast->next->next;
            slow=slow->next;
            if(fast==slow) break;
        }
        if(fast==NULL || fast->next==NULL) return NULL;
        fast=pHead;
        while(fast!=slow) {
            fast=fast->next;
            slow=slow->next;
        }
        return fast;        
    }
};