- 常规输入检查
- 让 head 一步步往前走,另定义一个 fast,两步两步往前走
- 如果 head 或者 fast 出现了 null, 说明无环, return false
- 如果 head 与 fast 相遇,则说明 有环, return true
bool hasCycle(struct ListNode* head ) {
if (!head){
return false;
}
struct ListNode* fast = head->next;
for (int i = 0; i < 10000; i++){
if (!fast || !(fast->next)){
return false;
}
if (head == fast){
return true;
}
head = head->next;
fast = fast->next->next;
}
return true;
}