leetcode - 141-- lista ligada circular,

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
解释:链表中有一个环,其尾部连接到第二个节点。

Aqui Insert Picture Descrição
Exemplo 2:

输入:head = [1,2], pos = 0
输出:true
解释:链表中有一个环,其尾部连接到第一个节点。

Aqui Insert Picture Descrição
Exemplo 3:

输入:head = [1], pos = -1
输出:false
解释:链表中没有环。

Aqui Insert Picture Descrição


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

Publicado 378 artigos originais · ganhou elogios 43 · vê 40000 +

Acho que você gosta

Origin blog.csdn.net/weixin_43283397/article/details/105133256
Recomendado
Clasificación