【数据结构OJ题】环形链表II

简介: 力扣题目——环形链表II

​​
原题链接:https://leetcode.cn/problems/linked-list-cycle-ii/description/

目录

  1. 题目描述

  2. 思路分析

  3. 代码实现

1. 题目描述

image.png

2. 思路分析

如果有小伙伴不了解环形链表,可以先看看这篇文章:

https://blog.csdn.net/m0_62531913/article/details/132352203?spm=1001.2014.3001.5502

我们来看下图:
image.png

我们根据这个结论就可以做出这道题目了!

3. 代码实现

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode *detectCycle(struct ListNode *head) {
   
    struct ListNode *slow=head,*fast=head;
    while(fast&&fast->next)
    {
   
        slow=slow->next;
        fast=fast->next->next;
        if(slow==fast)
        {
   
            struct ListNode *meet=slow;
            while(head!=meet)
            {
   
                head=head->next;
                meet=meet->next;
            }
            return meet;
        }
    }
    return NULL;
}

image.png

​​

相关文章
|
2天前
|
存储 Java 索引
【数据结构】链表从实现到应用,保姆级攻略
本文详细介绍了链表这一重要数据结构。链表与数组不同,其元素在内存中非连续分布,通过指针连接。Java中链表常用于需动态添加或删除元素的场景。文章首先解释了单向链表的基本概念,包括节点定义及各种操作如插入、删除等的实现方法。随后介绍了双向链表,说明了其拥有前后两个指针的特点,并展示了相关操作的代码实现。最后,对比了ArrayList与LinkedList的不同之处,包括它们底层实现、时间复杂度以及适用场景等方面。
21 10
【数据结构】链表从实现到应用,保姆级攻略
|
23天前
|
存储 C语言
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
|
17天前
|
存储 Java 程序员
"揭秘HashMap底层实现:从数组到链表,再到红黑树,掌握高效数据结构的秘密武器!"
【8月更文挑战第21天】HashMap是Java中重要的数据结构,采用数组+链表/红黑树实现,确保高效查询与更新。构造方法初始化数组,默认容量16,负载因子0.75触发扩容。`put`操作通过计算`hashCode`定位元素,利用链表或红黑树处理冲突。`get`和`remove`操作类似地定位并返回或移除元素。JDK 1.8优化了链表转红黑树机制,提升性能。理解这些原理能帮助我们更高效地应用HashMap。
29 0
|
19天前
|
存储 算法
【初阶数据结构篇】顺序表和链表算法题
此题可以先找到中间节点,然后把后半部分逆置,最近前后两部分一一比对,如果节点的值全部相同,则即为回文。
|
19天前
|
存储 测试技术
【初阶数据结构篇】双向链表的实现(赋源码)
因为头结点的存在,plist指针始终指向头结点,不会改变。
|
19天前
|
存储 测试技术
【初阶数据结构篇】单链表的实现(附源码)
在尾插/尾删中,都需要依据链表是否为空/链表是否多于一个节点来分情况讨论,目的是避免对空指针进行解引用造成的错误。
|
22天前
|
算法
【数据结构与算法】共享双向链表
【数据结构与算法】共享双向链表
10 0
|
22天前
|
算法
【数据结构与算法】双向链表
【数据结构与算法】双向链表
9 0
|
22天前
|
算法
【数据结构与算法】循环链表
【数据结构与算法】循环链表
9 0
|
22天前
|
存储 算法
【数据结构与算法】链表
【数据结构与算法】链表
13 0