3. 链表求环

作者: 编程半岛 | 来源:发表于2018-06-14 17:08 被阅读2次

已知链表中可能存在环,若有环返回环起始节点,否则返回NULL

如图:

方法一:使用set求环起始节点

  1. 遍历链表,将链表中节点对应的指针(地址)插入set中;
  2. 在遍历时插入节点前,需要在set中查找,第一个在set中发现的节点地址即为链表环的起点。
ListNode* detectCycle(ListNode* head)
{
    set<ListNode*> node_set;            // 设置查找集合node_set
    while(head)
    {
        if( node_set.find(head) != node_set.end() )     // 如果node_set中已经出现head,则返回head
        {
            return head;
        }
        node_set.insert(head);
        head = head->next;
    }
    return NULL;
}

方法二:快慢指针思想

主要思想

ListNode* detectCycle(ListNode* head)
{
    ListNode* fast = head;
    ListNode* slow = head;
    ListNode* meet = NULL;
    while(fast)
    {
        fast = fast->next;
        slow = slow->next;
        if( !fast )
        {
            return NULL;
        }
        fast = fast->next;
        if (fast == slow)
        {
            meet = fast;
            break;
        }
    }
    if (meet == NULL)
    {
        return NULL;
    }
    while(head && meet)
    {
        if( head == meet )
        {
            return head;
        }
        head = head->next;
        meet = meet->next;
    }
    return NULL;
}

方法一c++代码
方法二c++代码

相关文章

  • 3. 链表求环

    已知链表中可能存在环,若有环返回环起始节点,否则返回NULL。 方法一:使用set求环起始节点 遍历链表,将链表中...

  • 算法题面试复习

    算法模块 1. 链表 1. 链表翻转 2. 单链表判断是不是环+求环位置+求环长度 以图片为例,假设环入口距离链表...

  • 链表求环

    LeetCode 141. Linked List Cycle 142.Linked List Cycle II ...

  • 寻找两个链表的第一个公共结点

    有三种情况: 1、 两个链表都没有环2、 一个链表有环,一个链表无环3、 两个链表都有环 参考文章:求两个单链表的...

  • 算法复习再学习

    1.反转链表2.相交链表3.判断链表是否是环二叉树的中序遍历跳台阶求 最大(小)的K 个数 构建小(大)顶堆 L...

  • 链表

    单向链表 链表反转 判断是否有环,找链表的中间节点 快慢指针 找环的入口(求两个链表的交点可以转化成这个问题) p...

  • 算法应用-单链表

    单向链表中代码实现检查是否有环,如果有环,求环的长度和入环的节点? 思路: 假设单链表如上图,检查是否有环这个简单...

  • P111-判断一个单向链表是否构成了环形,找出环的出口

    判断是否为环 思路1 两个指针 思路2 map 求入口 参考:链表有环,判断环的入口点 求环长 参考:那么如何得到...

  • 判断单链表是否有环、求环长和环入口最优算法

    判断单链表是否有环、求环长和环入口最优算法 判断单链表是否有环是一个十分经典的算法问题,许多考试或者面试都有很大的...

  • 关于链表经典算法题都在这里了

    1.单链表反转(LeetCode 206) 2.链表中环的检测 (LeetCode 141) 3.求链表中环开始结...

网友评论

    本文标题:3. 链表求环

    本文链接:https://www.haomeiwen.com/subject/fhwvsftx.html