思路:也是用的
思路:也是用的快慢指针,但是要求相遇的第几个节点,因为形成了环,那么head就得和相遇的那个节点一样往下走,使得meet和head能够相遇,否则无法相遇,meet会在环节点不断重复,那么head往下走必然会遇见meet,主要得看他们之间的距离!
struct ListNode* detectCycle(struct ListNode* head) {
struct ListNode* slow = head, * fast = head;
while (fast && fast->next)
{
slow = slow->next;
fast = fast->next->next;
if (slow == fast)
{
struct ListNode* meet = slow;
while (meet != head)
{
meet = meet->next;
head = head->next;
}
return meet;
}
}
return NULL;
}