如果你对快慢指针,环形链表有疑问,可以参考下面这篇文章,了解什么是环形链表后,再做这道题会非常简单,也更容易理解下面的图片公式等。
LeetCode - 141. 环形链表 (C语言,快慢指针,配图)-CSDN博客
上述文章总结:如果一个链表是环形链表,采用快慢指针,快慢指针会在环中相遇,从而得到相遇点。
理论基础:
当链表是环形链表的时候,一个指针从入口位置开始,一个指针从相遇点开始,他们相遇的那个点就是入口点。我们可以从下面这张图中了解。文章来源:https://www.toymoban.com/news/detail-755129.html
文章来源地址https://www.toymoban.com/news/detail-755129.html
代码展示:
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;
}
到了这里,关于LeetCode - 142. 环形链表 II (C语言,快慢指针,配图)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!