如果你对快慢指针,环形链表有疑问,可以参考下面这篇文章,了解什么是环形链表后,再做这道题会非常简单,也更容易理解下面的图片公式等。
LeetCode - 141. 环形链表 (C语言,快慢指针,配图)-CSDN博客
理论基础:
当链表是环形链表的时候,一个指针从入口位置开始,一个指针从相遇点开始,他们相遇的那个点就是入口点。我们可以从下面这张图中了解。
代码展示:
struct ListNode *detectCycle(struct ListNode *head) {struct ListNode* fast = head;struct ListNode* slow = head;while(fast && fast->next){fast = fast->next->next;slow = slow->next;if(fast == slow){struct ListNode* meet = fast;while(meet != head){meet = meet->next;head=head->next;}return meet; }}return NULL;
}