# coding:utf-8
"""
Name : NO142.py
Author : qlb
Contect : 17801044486@163.com
Time : 2021/2/4 10:40
Desc:
"""
#解题思路
# 暴力解法 遍历所有的节点 将被遍历过的节点存储在一个临时变量tmpNode中
# 每次判断当前节点是否在tmpNode中 如果在的话 证明发现环 环的入口就是当前节点
# 如果遍历结束还未发现环 则返回None
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def detectCycle(self, head: ListNode) -> ListNode:
# 此处可以用列表 也可以用集合 集合比列表快 为啥? 因为集合存入元素的时候会把内存地址也计算出来保存 这样查找某个元素 直接根据其内存地址就找到了 列表需要遍历所有
#tmpNode = []
tmpNode = set()
curNode = head
while curNode != None:
if curNode in tmpNode:
return curNode
#tmpNode.append(curNode)
tmpNode.add(curNode)
curNode = curNode.next
return