牛客TOP101:判断链表中是否有环

avatar
作者
猴君
阅读量:2

文章目录

1. 题目描述

在这里插入图片描述

2. 解题思路

  快慢指针,原理就是快指针一次走两步,慢指针一次走一步,快指针会先进入到环中进行循环,慢指针后进行。以相对来看,快指针是比慢指针多走一步,只要进入到环中,那么快指针迟早会追上慢指针。如果没有环,就会走到nullptr。

3. 代码思路

/**  * Definition for singly-linked list.  * struct ListNode {  *     int val;  *     ListNode *next;  *     ListNode(int x) : val(x), next(NULL) {}  * };  */ class Solution { public:     bool hasCycle(ListNode *head) {         if(head == nullptr) return false;         ListNode* fast = head, *slow = head;         while(fast && slow && fast->next)         {             fast = fast->next->next;             slow = slow->next;             if(fast == slow) return true;         }         return false;     } }; 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!