Dado que são números inteiros tais que para todos os , e a ocorrência de cada número, exceto um número específico em é um número ímpar. Tente encontrar o número cuja ocorrência é um número par.
Existe um algoritmo : classificamos em e quebre em várias partes, cujo valor dos elementos é o mesmo, portanto, podemos contar a ocorrência de cada elemento.
Eu quero encontrar um algoritmo de pior caso -time-and- -espaço.
Supondo que e , portanto, a classificação do radical não é aceitável. Operações binárias bit a bit são aceitáveis, por exemplo, .
algorithms
search-algorithms
Yai0Phah
fonte
fonte
Respostas:
Aqui está uma idéia para um algoritmo simples; apenas conte todas as ocorrências!
Em suma, isso fornece um algoritmo de tempo linear que pode usar (no sentido de alocar) muita memória. Observe que ser capaz de acessar aleatoriamente em tempo constante, independentemente de é crucial aqui.mC m
Um ligado ao espaço é mais difícil com essa abordagem; Não conheço nenhuma estrutura de dados do dicionário que ofereça pesquisa de tempo . Você pode usar tabelas de hash para a qual aqui são implementações com esperado lookup tempo ( tamanho da tabela, o número de elementos armazenados) para que possa obter arbitrariamente bom com espaço linear - na expectativa. Se todos os valores em mapearem o mesmo valor de hash, você estará ferrado.O ( 1 ) O ( 1 + k / n ) n k AO(n) O(1) O(1+k/n) n k A
fonte
Uma solução quase trivial - que usa o espaço - é usar um mapa de hash. Lembre-se de que um mapa de hash amortizou o tempo de execução para adicionar e procurar elementos.O ( 1 )Θ(n) O(1)
Portanto, podemos usar o seguinte algoritmo:
Alocar um mapa de hash . Iterar . Para cada elemento , aumente o número de ocorrências vistas, ou seja, .A i ∈ A H ( i ) + +H A i∈A H(i)++
Itere o conjunto de chaves do mapa de hash e verifique qual das chaves possui uma contagem uniforme de ocorrências.
Agora, esse é um algoritmo simples, que não usa truques grandes, mas às vezes é o suficiente. Caso contrário, você pode especificar quais restrições de espaço impõe.
fonte