算法笔记——循环链表

带环链表

算法题中,会有一种题目让我们去判断链表里的是否有循环。

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

算法笔记——循环链表_第1张图片

这里就需要我们要用快慢指针来进行搜索,直接提供代码

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;
    }
};

工作原理如下图

算法笔记——循环链表_第2张图片

因为fast始终会比slow快一步,所以在循环里始终会相遇,若没有循环,那么fast就会读取到最后nullptr处,然后终止判断即可。

相关题目

202. 快乐数 - 力扣(LeetCode)

快乐数解析:http://t.csdn.cn/EIVuj

你可能感兴趣的:(算法,笔记,链表)