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

链表中环的入口结点

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

#step 1:使用BM6.判断链表中是否有环中的方法判断链表是否有环,并找到相遇的节点。
#step 2:慢指针继续在相遇节点,快指针回到链表头,两个指针同步逐个元素逐个元素开始遍历链表。
#step 3:再次相遇的地方就是环的入口。
class Solution:
    def EntryNodeOfLoop(self, pHead):
			#定义快慢指针
        fast = pHead
        slow = pHead
		查看是否有环
        while fast != None and  fast.next != None: 
            fast = fast.next.next
            slow = slow.next
            if fast == slow:
                # 两指针相遇
                fast = pHead
                # 让快指针指向头节点
                while fast != slow:
                    fast = fast.next
                    slow = slow.next
                    # 走a步(环之前步数)
                return fast
        return None

全部评论

相关推荐

不愿透露姓名的神秘牛友
01-13 11:56
ldyllic:飞神,985+美团+腾讯+京东,无敌飞飞神
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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