美文网首页
LeetCode-循环链表II

LeetCode-循环链表II

作者: Pei丶Code | 来源:发表于2018-08-30 14:58 被阅读16次

环形链表 II

给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。


先说明一下思路,和网上解法一样。两个指针,一个快指针q(q = q->next->next),一个慢指针p(p->next);

  1. 假设链表的直线部分长 X,环形部分长 Y,慢指针走的距离为 S,则快指针走的距离为 2S。
  2. 当两个指针第一次相遇时,存在等式:2S - S = nY(n >= 1, n∈N*),即,S = nY;

此时,令q = head,回到起点,q = q->next; 让快慢指针同时出发,当两者相遇时,便是环的入口;
慢指针距离环入口: Y-(S - X)
及证明:Y-(S - X) + kY = X , 且S = nY 成立即可,
kY = (n-1)Y;
即存在正整数k = (n-1) 使得等式成立。

struct ListNode *detectCycle(struct ListNode *head) {
    if(head==NULL || head->next == NULL){
        return NULL;
    }
    struct ListNode *p, *q;
    p = head;
    q = head;
    while(q->next != NULL && q->next->next != NULL){
        p = p->next;
        q = q->next->next;
        if (p == q ){
            q = head;
            while(1){
                //需要考虑到,相遇点就是起点的情况,如:[1,2];
                if(p == q){
                    return q;
                    break;
                }
                q = q->next;
                p = p->next;
                
            }
            
        }
    }
    return NULL;
}

相关文章

  • LeetCode-循环链表II

    环形链表 II 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 先说明一下思路,和...

  • LeetCode-循环链表

    给定一个链表,判断链表中是否有环。进阶:你能否不使用额外空间解决此题? 当初面试的时候,基本上都会问到这个问题 解...

  • 2022-02-25 029.排序的循环链表 537. 复数

    剑指 Offer II 029. 排序的循环链表[https://leetcode-cn.com/problems...

  • 数据结构与算法之循环链表(3.4)

    目录 单向循环链表双向循环链表约瑟夫问题如何发挥循环链表的最大威力? 一 单向循环链表 单向循环链表 - 只有一个...

  • 双向链表&双向循环链表

    链表分为:单链表、单向循环链表、双向链表、双向循环链表本节主要说明:双向链表、双向循环链表 定义结点 一、双向链表...

  • LeetCode-链表

    LeetCode-链表 链表(Linked List)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺...

  • 0x05双向循环链表

    1 双向循环链表创建 2 双向循环链表插入元素 3 遍历双向循环链表 4双向循环链表删除结点

  • 10.单向循环链表SingleCycleLinkList

    目录:1.单向循环链表的定义2.单向循环链表的图解3.单向循环链表定义操作4.单向循环链表的实现 1.单向循环链表...

  • 线性表-单向循环链表

    为了方便,本文介绍的单向循环链表不包含头节点 单向循环链表内容 单向循环链表的的定义 单向循环链表的创建 单向循环...

  • 数据结构基础--单向循环链表

    单向循环链表 单向循环链表是可循环的单链表,它与单链表的区别在于单向链表的最后一个元素的指针域为空,而单向循环链表...

网友评论

      本文标题:LeetCode-循环链表II

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