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

链表中环的入口结点

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
全部评论

相关推荐

微风不断:兄弟,你把四旋翼都做出来了那个挺难的吧
点赞 评论 收藏
分享
投票
我要狠拿offer:如果不是必须去成都绝对选九院呀,九院在四川top1研究所了吧
点赞 评论 收藏
分享
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务