牛客-剑指offer系列题解:链表中环的入口结点

记录刷题的过程。牛客和力扣中都有相关题目,这里以牛客的题目描述为主。该系列默认采用python语言。
1、问题描述:
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。

2、数据结构:
链表

3、题解:
快慢指针
先判断是否有环
然后用慢指针,找环的入口

# -*- 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 pHead == None:
            return None
        #快慢指针,找是否有环
        fastp = pHead
        slowp = pHead
        while fastp and fastp.next:
            fastp = fastp.next.next
            slowp = slowp.next
            if fastp == slowp:
                break
        #没环
        if fastp == None or fastp.next == None:
            return None
        #否则有环,找环入口
        slowp2 = pHead
        while slowp != slowp2:
            slowp = slowp.next
            slowp2 = slowp2.next
        return slowp

4、复杂度分析

时间复杂度:O(N)
空间复杂度:O(1)

发布了61 篇原创文章 · 获赞 10 · 访问量 2897

猜你喜欢

转载自blog.csdn.net/weixin_42042056/article/details/105716525