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