1.双指针
bool hasCycle(struct ListNode *head) {
if(head==NULL)return false;
struct ListNode *p=head;
struct ListNode *q=head->next;
while(q!=p){
if(q==NULL||q->next==NULL)
return false;
p=p->next;
q=q->next->next;
}
return true;
}
2.改值
bool hasCycle(struct ListNode *head) {
if(head==NULL) return false;
struct ListNode *p=head;
while(p->next!=NULL){
p->val=888;
p=p->next;
if(p->val==888)
return true;
}
return false;
}
999不行,评论说888可以
3.计算时间法
有人给了案列总数