码迷,mamicode.com
首页 > 其他好文 > 详细

142. 环形链表 II(找循环点)

时间:2020-12-19 12:20:15      阅读:1      评论:0      收藏:0      [点我收藏+]

标签:str   turn   false   一个   info   struct   测试   lis   ret   

给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。表为无头结点、单向。(由于涉及到结构体,所以写不了完整的测试代码,下面展示的代码为LeetCode中写的代码)

//第一次尝试:
//方法:图文解释:
技术图片
//当然,这个方法有点不好想,我们还可以这样做:(这里就不演示了)
技术图片
struct
ListNode* detectCycle(struct ListNode* head) { if(head == NULL){ return false; } struct ListNode* fast = head; struct ListNode* slow = head;
//快慢指针法,循环遍历找相遇点
while(fast&&fast->next){ fast = fast->next->next; slow = slow->next; if(slow == fast){ break; } }
//如果链表无环,那么就不会进入下面的循环中,而是指直接返回NULL
//有环就从头结点和相遇点开始遍历,直到二者相遇,返回交点
while(fast&&fast->next){ if(fast == head){ return fast; } fast = fast->next; head = head->next; } return NULL; }

 

142. 环形链表 II(找循环点)

标签:str   turn   false   一个   info   struct   测试   lis   ret   

原文地址:https://www.cnblogs.com/zhm521/p/14127979.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!