阅读量: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; } };