根据题目特点类似hash就行。
因为每个节点的值都是大于0的,小于10000,定义一个指针遍历,遍历到当前的就取负,如果遍历到一个节点他的值是负的就证明以前遍历过了,也就有环了,取个相反数返回就行


struct ListNode* EntryNodeOfLoop(struct ListNode* pHead ) {
    // write code here
    struct ListNode *p = pHead;
    while(p != NULL && p->next != NULL)
    {
        if(p->val > 0)
        {
            p->val = 0 - p->val;
            p = p->next;
        }else{
            p->val = 0 - p->val;
            return p;
        }
    }
    return NULL;
}