- lista ligada circular
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:
Entrada: cabeça = [3,2,0, -4] , pos = 1
Saída: verdadeira
explicação: a lista tem uma porção da cauda do anel ligado a um segundo nó.
Fonte: estadia botão (LeetCode)
link: https: //leetcode-cn.com/problems/linked-list-cycle
protegidas por copyright dedução de todas as redes. reimpressão comercial entre em contato com a reimpressão autorizado oficial, não-comercial por favor, indicar a fonte.
Conhecimento Point: Set herdado da interface de coleção, não é permitido aos elementos duplicados e coleções não ordenadas, existem duas classes de implementação HashSet e TreeSet.
Pensando: uma nova tabela hash, cada nó para a tabela de Hash, se for repetido, em seguida, provar anel
/**
* Definition for singly-linked list.
* class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public boolean hasCycle(ListNode head) {
//Set继承于Collection接口,是一个不允许出现重复元素,并且无序的集合,主要有HashSet和TreeSet两大实现类。
Set<ListNode> nodesSeen = new HashSet<>();
while(head!=null)
{
if(nodesSeen.contains(head))
{
return true;
}
else
{
nodesSeen.add(head);
}
head=head.next;
}
return false;
}
}