博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linked List Cycle && Linked List Cycle II
阅读量:6401 次
发布时间:2019-06-23

本文共 1225 字,大约阅读时间需要 4 分钟。

Given a linked list, return the node where the cycle begins. If there is no cycle, return null.

Note: Do not modify the linked list.

Follow up:

Can you solve it without using extra space?

 

 to see which companies asked this question

 

查看是否有环,快慢两个指针一个移动一步,一个移动两步,是否相遇

查看环的起点,相遇后,将其中一个指针移到链表头,两个指针每次向后移动一步,相遇的点就是环的起点

证明可参考:

Linked List Cycle

bool hasCycle(ListNode *head) {    if (head == nullptr || head->next == nullptr)        return false;    ListNode *slow = head, *fast = head;    while (fast->next && fast->next->next)    {        fast = fast->next->next;        slow = slow->next;        if (fast == slow)            return true;    }    return false;}

Linked List Cycle II

ListNode *detectCycle(ListNode *head) {    if (head == nullptr || head->next == nullptr)        return nullptr;    ListNode *slow = head, *fast = head;    while (fast->next && fast->next->next)    {        fast = fast->next->next;        slow = slow->next;        if (fast == slow)        {            slow = head;            while (slow != fast)            {                slow = slow->next;                fast = fast->next;            }            return slow;        }    }    return nullptr;}

 

转载于:https://www.cnblogs.com/sdlwlxf/p/5128498.html

你可能感兴趣的文章
默认连接电脑的模式为MTP【转】
查看>>
YAML简介
查看>>
JVM内存溢出环境备份方法
查看>>
360se打开慢,lsass 过高 , cpu温度上升
查看>>
jmeter 插件下载下载方法
查看>>
BZOJ1004: [HNOI2008]Cards(Burnside引理 背包dp)
查看>>
企业建立私有云的N个理由
查看>>
python 验证码识别示例(一) 某个网站验证码识别
查看>>
关于加密(转载文章)
查看>>
浅谈tcp socket的backlog参数
查看>>
js对数值型数组排序错误
查看>>
MVC ---- 怎删改查
查看>>
怎样更聪明的工作
查看>>
【.NET 深呼吸】.net core 中的轻量级 Composition
查看>>
electron-vue 用 electron-packager 打包的问题备忘
查看>>
无人驾驶入门(基本流程)
查看>>
CentOS安装Tomcat
查看>>
[转]innodb的锁时间
查看>>
deeplearning4j——卷积神经网络对验证码进行识别
查看>>
C#获取一个实体类的属性名称、属性值
查看>>