0
点赞
收藏
分享

微信扫一扫

python实现快慢指针

小_北_爸 2022-01-22 阅读 54
class LinkNode():
    def __init__(self,value = None):
        self.value = value
        self.next = None

def Creat_Link_Tail(lst):
    L = LinkNode(lst[0])
    first_node = L
    for i in range(1, len(lst)):
        if type(lst[i]) == int:
            p = LinkNode(lst[i])
            L.next = p
            L = p
        else:
            p = LinkNode(lst[i][0])
            L.next = p
            L = p
            for j in range(1, len(lst[i])):
                c = LinkNode(lst[i][j])
                L.next = c
                c.next = p
                L = c
    return first_node

# 快慢指针
class solution():
    def EntryNodeOf_Loop(self,lhead):
        slow = lhead
        fast = lhead
        while fast != None and fast.next != None:
            fast = fast.next.next
            slow = slow.next
            if slow == fast:
                while lhead != slow:
                    lhead = lhead.next
                    slow = slow.next
                return slow.value
        return None

if __name__ == '__main__':
    lst = [1,2,3,[4,5,6,7]]
    lhead = Creat_Link_Tail(lst)
    solution = solution()
    res = solution.EntryNodeOf_Loop(lhead)
    print(res)

在这里插入图片描述

举报

相关推荐

0 条评论