1. Utilisation de l'espace supplémentaire O (1), en temps O (n log n)
Ceci est possible, par exemple:
- faites d'abord un tri sur place O (n log n)
- puis parcourez la liste une fois, en écrivant la première instance de chaque dos au début de la liste
Je crois que le partenaire d'ejel a raison de dire que la meilleure façon de procéder serait une sorte de fusion sur place avec une étape de fusion simplifiée, et c'est probablement l'intention de la question, si vous étiez par exemple. écrire une nouvelle fonction de bibliothèque pour le faire aussi efficacement que possible sans possibilité d'améliorer les entrées, et dans certains cas, il serait utile de le faire sans table de hachage, selon les types d'entrées. Mais je n'ai pas vraiment vérifié cela.
2. Utilisation d'espace supplémentaire O (lots), en temps O (n)
- déclarer un tableau nul assez grand pour contenir tous les entiers
- parcourir le tableau une fois
- définissez l'élément de tableau correspondant sur 1 pour chaque entier.
- S'il était déjà 1, ignorez cet entier.
Cela ne fonctionne que si plusieurs hypothèses discutables sont valables:
- il est possible de mettre à zéro la mémoire à moindre coût, ou la taille des entiers est petite par rapport au nombre d'entre eux
- vous êtes heureux de demander à votre système d'exploitation 256 ^ sizepof (int) mémoire
- et il le mettra en cache pour vous vraiment très efficacement si c'est gigantesque
C'est une mauvaise réponse, mais si vous avez BEAUCOUP d'éléments d'entrée, mais ce sont tous des entiers de 8 bits (ou peut-être même des entiers de 16 bits), cela pourrait être le meilleur moyen.
3. O (peu) -espace supplémentaire, O (n) -ish temps
Comme n ° 2, mais utilisez une table de hachage.
4. La voie claire
Si le nombre d'éléments est petit, l'écriture d'un algorithme approprié n'est pas utile si un autre code est plus rapide à écrire et plus rapide à lire.
Par exemple. Parcourez le tableau pour chaque élément unique (c'est-à-dire le premier élément, le deuxième élément (les doublons du premier ayant été supprimés), etc.) en supprimant tous les éléments identiques. O (1) espace supplémentaire, O (n ^ 2) temps.
Par exemple. Utilisez les fonctions de bibliothèque qui font cela. l'efficacité dépend de ce que vous avez facilement disponible.