Linked List Cycle II

来源:互联网 发布:数据港股票诊断 编辑:程序博客网 时间:2024/06/16 17:22

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

Follow up:
Can you solve it without using extra space?

这题是在 Linked List Cycle II 的基础上(http://blog.csdn.net/ayst123/article/details/38774927),把return true换成return findnode()即可

假设fast和slow相遇在环中A点,如果slow 走了n 步,则fast走了2n步。此时,如果fast不动,slow再走n步就会追上n步。再如果fast从head开始,则fast和slow还会在A点相遇。 很容易想到,他们之前肯定还会再遇到至少一次,这个点就是环入口。

C++ 

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode* findnode(ListNode* head, ListNode* slow){        ListNode* fast = head;        while (fast!=slow){            fast = fast->next;            slow = slow->next;        }        return fast;    }        ListNode *detectCycle(ListNode *head) {        ListNode* fast = head;        ListNode* slow = head;        while (fast!=NULL and fast->next!=NULL){            fast = fast->next->next;            slow = slow->next;            if (fast==slow){                return findnode(head,slow);            }        }        return NULL;    }};


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 网页百度网盘不播放视频怎么办 手机qq邮箱中转站容量不足怎么办 qq邮箱容量满了怎么办 手机邮箱中转站容量不足怎么办 微信号登陆要好友验证怎么办 邮箱账号名忘了怎么办 苹果六话筒坏了怎么办 iphone后置摄像头坏了怎么办 苹果8听歌声音小怎么办 酷狗音乐没了怎么办 手机听歌音量小怎么办 苹果手机酷狗音乐打不开怎么办 电脑酷狗音乐打不开怎么办 酷狗音乐无法运行播放怎么办? 酷狗音乐停止运行怎么办 米6蓝牙声音小怎么办 手里酷狗id丢了怎么办 连麦声音不好听怎么办 微信语音声音很难听怎么办 微信聊天语音没有声音怎么办 微信发语音声音不好听怎么办 微信语音说话不好听怎么办 微信字体变粗怎么办 笔记本无法识别usb设备怎么办 手机qq音乐闪退怎么办 qq音乐总是闪退怎么办 手机qq音乐闪退怎么办修复 苹果7p耳机漏音怎么办 akgn25耳机盖掉了怎么办 外汇平台跑路了怎么办 微云资料没了怎么办 酷狗k歌有杂音怎么办 手机k歌音质不好怎么办 酷狗让升级内测取消之后怎么办 苹果5s声音太小怎么办 苹果6p调均衡卡怎么办 忘记密码怎么办登录云教育 登录微信收不到验证码怎么办 红米手机黑白屏怎么办 手机登录不上电子邮件怎么办 如果台湾发生骚乱大陆怎么办