class Node:
def __init__(self, value=None, next_addr=None):
self._value = value
self._next_addr = next_addr
@property
def next_addr(self):
return self._next_addr
@next_addr.setter
def next_addr(self, addr):
self._next_addr = addr
@property
def value(self):
return self._value
@value.setter
def value(self, value):
self._value = value
def check(first):
fast = first
slow = first
item = None
while fast and fast.next_addr:
fast = fast.next_addr.next_addr
slow = slow.next_addr
if fast is slow:
item = first
if item is not None:
if item is slow:
return item.value
item = item.next_addr
return False
if __name__ == '__main__':
aa = Node(value='aa')
bb = Node(value='bb')
cc = Node(value='cc')
dd = Node(value='dd')
ee = Node(value='ee')
aa.next_addr = bb
bb.next_addr = cc
cc.next_addr = dd
# dd.next_addr = aa
dd.next_addr = ee
ee.next_addr = cc
print(check(aa))
快慢指针找出环路入口-python实现
最新推荐文章于 2022-03-16 11:00:50 发布