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

链表中环的入口结点

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

相关推荐

就在我现在公司的隔壁每天经过都唏嘘不已(就是羡慕)什么时候可以到这里上班啊
柯基在debug:从大学毕业投简历到现在了,应届的时候我都面到终面了,现在工作四年了连简历初筛都过不了了
投递莉莉丝游戏等公司8个岗位
点赞 评论 收藏
分享
06-26 17:24
已编辑
宁波大学 Java
一口洪烧肉:哈哈哈哈哈哈哈哈哈哈哈硬要啊
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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