【leetcode】142.环形链表II

cpp 复制代码
struct ListNode *detectCycle(struct ListNode *head) {
    struct ListNode *fast=head;
    struct ListNode *slow=head;
    // 先用快、慢指针找到相遇点
    // 若相遇,则说明存在环
    while(fast!=NULL&&fast->next!=NULL)
    {
        fast=fast->next->next;
        slow=slow->next;
        if(fast==slow)
        {
            // 再找到环的入口
            struct ListNode *p=head;
            // x=(n-1)(y+z)+z
            while(p!=slow)
            {
                p=p->next;
                slow=slow->next;
            }
            return p;
        }
    }
    return NULL;
}
相关推荐
MicroTech20251 分钟前
MLGO微算法科技,推出革命性量子算法ANQITE,推动量子计算新时代
科技·算法·量子计算
17(无规则自律)21 分钟前
Leetcode第二题:用 C++ 解决字母异位词分组
c++·leetcode·哈希算法
样例过了就是过了22 分钟前
LeetCode热题100 子集
数据结构·c++·算法·leetcode·dfs
I_LPL27 分钟前
day52 代码随想录算法训练营 图论专题5
java·算法·图论·并查集
jing-ya30 分钟前
day 49 图论part1
算法·深度优先·图论
想吃火锅100538 分钟前
【leetcode】98.验证二叉搜索树
算法·leetcode·职场和发展
一叶落43839 分钟前
【LeetCode 172】阶乘后的零(C语言详解 | 数学规律 + 对数时间复杂度)
c语言·数据结构·算法·leetcode·动态规划
自信1504130575939 分钟前
数据结构初阶——二叉树之——堆的实现
c语言·数据结构·算法
Barkamin40 分钟前
(有头)链表的实现(Java)
java·数据结构·链表
!停1 小时前
数据结构算法—归并排序
数据结构·算法