链表中环的入口结点

快慢指针f , s,两指针相遇时,f = 2* s, 设环长度为n,n = s
再一个慢指针从链表头开始,两个慢指针相遇的地方则为入口

# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    def EntryNodeOfLoop(self, pHead):
        # write code here
        if not pHead.next:
            return None
        fast = pHead
        slow = pHead
        while fast.next and fast.next.next:
            fast = fast.next.next
            slow = slow.next
            if fast == slow:
                break
        slow2 = pHead
        while slow != slow2:
            slow = slow.next
            slow2 = slow2.next
        return slow
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文首发于我的个人博客:尾尾部落 题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出nul...
    繁著阅读 6,600评论 1 0
  • 题目描述:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 思路:a、第一步,找环中相汇...
    fighting_css阅读 1,833评论 0 0
  • 链表中环的入口结点 题目描述 一个链表中包含环,请找出该链表的环的入口结点。 思路一: 用map或者set,遍历链...
    Jacinth阅读 2,338评论 0 0
  • 思路:leetcode上也有这道题,具体思想是,两个指针fast和slow,fast以slow两倍速度前进,如果没...
    DaiMorph阅读 2,444评论 0 1
  • 师父,是这样的。我选了一篇,发送,以为可以直接用了。没想到那样发的是一本书。 不是因为忙,就这样发了,应付一下。是...
    陈紫隽阅读 1,352评论 0 0