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

链表中环的入口结点

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

相关推荐

01-05 09:14
同济大学 Java
心碎一号线:我要是9✌🏻我就选保研,保研了大四再找实习,实习之后,如果觉得自己不适合互联网工作模式,还能有其他选择,如果实习后决定了走互联网,也能提升学历提高竞争力
点赞 评论 收藏
分享
程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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