Assunto Descrição:
Dada uma lista, a lista é determinado se um anel. Para mostrar a lista dada anel, nós inteiros pos ligados ao fim da lista para representar a posição da lista (índice começa a partir de 0). Se pos for -1, o anel não está na lista.
Exemplo 1:
输入:head = [3,2,0,-4], pos = 1
输出:true
解释:链表中有一个环,其尾部连接到第二个节点。
Exemplo 2:
输入:head = [1,2], pos = 0
输出:true
解释:链表中有一个环,其尾部连接到第一个节点。
Exemplo 3:
输入:head = [1], pos = -1
输出:false
解释:链表中没有环。
ideias de resolução de problemas:
Use velocidade do duplo ponteiro, mãos rápidas cada um dar dois passos, cada passo a ponteiro lento. Atravessando o fluxo de cima, se o ponteiro rapidamente vir Nenhum, então não existe qualquer anel (ausência anular interior de terminação da cadeia). Se o ponteiro rápido e lento que o ponteiro, então há um anel
código:
class ListNode(object):
def __init__(self, x):
self.val = x
self.next = None
class Solution(object):
def hasCycle(self, head):
if head == None: return False
slow = head
fast = head.next
while fast!= slow:
if fast == None or fast.next == None or fast.next.next == None:
return False
slow = slow.next
fast = fast.next.next
return True
ligações de referência:
leetcode cadeia-141- interminável
Tópico Fonte:
https://leetcode-cn.com/problems/linked-list-cycle