其他分享
首页 > 其他分享> > LeetCode 面试题 02.08. 环路检测

LeetCode 面试题 02.08. 环路检测

作者:互联网

题目链接:https://leetcode-cn.com/problems/linked-list-cycle-lcci/ 

给定一个有环链表,实现一个算法返回环路的开头节点。
有环链表的定义:在链表中某个节点的next元素指向在它前面出现过的节点,则表明该链表存在环路。

示例 1:

输入:head = [3,2,0,-4], pos = 1
输出:tail connects to node index 1
解释:链表中有一个环,其尾部连接到第二个节点。

示例 2:

输入:head = [1,2], pos = 0
输出:tail connects to node index 0
解释:链表中有一个环,其尾部连接到第一个节点。

示例 3:

输入:head = [1], pos = -1
输出:no cycle
解释:链表中没有环。

 1 struct ListNode *detectCycle(struct ListNode *head) {
 2     struct ListNode *fast=head,*slow=head;
 3     while(fast&&fast->next){
 4         slow=slow->next;
 5         fast=fast->next->next;
 6         if(fast==slow) break;
 7     }
 8     if (fast==NULL||fast->next==NULL) return NULL;
 9     slow=head;
10     while(slow!=fast){
11         slow=slow->next;
12         fast=fast->next;
13     }
14     return fast;
15 }

 

标签:面试题,slow,02.08,head,fast,next,链表,节点,LeetCode
来源: https://www.cnblogs.com/shixinzei/p/12432737.html