题解 | #链表中环的入口结点#

链表中环的入口结点

http://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4

# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    def EntryNodeOfLoop(self, pHead):
        #双指针法
        slow=pHead#每次走一步
        fast=pHead#每次走两步
        while(fast and fast.next):
            slow=slow.next
            fast=fast.next.next
            if(slow==fast):#确认有循环
                break
        if(not fast or not fast.next):#可能是{1,2},{}无循环推出
            return None
        #设起点到入口为X,slow走了S,则入口到目前slow所在点的半圆长为S-X,
        #经计算,另一半圆=2*S-X-(S-X)*2=X
        #则,将fast置于起点,slow继续走完另一半圆,他们会在入口相遇
        fast=pHead
        while(fast!=slow):
            slow=slow.next
            fast=fast.next
        return fast
        # write code here
全部评论

相关推荐

牛客刘北:如果暑期实习是27届的话,你要晚一年才会毕业,企业为什么会等你呢?要搞清时间逻辑呀!27届现在实习只能是在暑假实习,这是日常实习,不是暑期实习。所以多去投日常实习吧,暑期实习肯定不会要你的
点赞 评论 收藏
分享
Twilight_mu:经典我朋友XXXX起手,这是那种经典的不知道目前行情搁那儿胡编乱造瞎指导的中年人,不用理这种**
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务