带环链表
算法题中,会有一种题目让我们去判断链表里的是否有循环。
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
这里就需要我们要用快慢指针来进行搜索,直接提供代码
class Solution {
public:bool hasCycle(ListNode *head) {ListNode *slow=head;ListNode *fast=head;while(fast&&fast->next){slow=slow->next;fast=fast->next->next;if(slow==fast)return true;}return false;}
};
工作原理如下图
因为fast始终会比slow快一步,所以在循环里始终会相遇,若没有循环,那么fast就会读取到最后nullptr处,然后终止判断即可。
相关题目
202. 快乐数 - 力扣(LeetCode)