Étant donné deux listes liées d'entiers. On m'a demandé de retourner une liste liée qui contient les éléments non communs. Je sais comment le faire en O (n^2), un moyen de le faire en O (n)?Comment obtenir les éléments rares de deux liste liée?
Répondre
Si elles ne sont pas triées, alors je ne crois pas qu'il soit possible d'aller mieux que O (n^2). Cependant, vous pouvez faire mieux en les triant ... vous pouvez trier dans un temps raisonnablement rapide, puis obtenir quelque chose comme O (nlogn) (je ne suis pas certain que ce soit ce que ce serait, mais je pense que ça peut être si rapide si vous utilisez le bon algorithme).
Il est possible d'aller mieux que O (n^2). Voir d'autres solutions impliquant la table de hachage. –
Vous pouvez faire un mergesort in-situ sur des listes liées assez rapidement - asymptotiquement dans O (n log n). Donc oui, le tri puis le diffing résoudront ceci dans O (n log n). Si vous n'êtes pas autorisé à modifier les listes d'origine, vous pouvez les copier, c'est-à-dire O (n), donc c'est toujours O (n log n). –
Utilisez une table de hachage. Iterate à travers la première liste chaînée, en entrant les valeurs que vous rencontrez dans une table de hachage.
Effectuez une itération sur la deuxième liste chaînée, en ajoutant tout élément non trouvé dans la table de hachage dans votre liste d'éléments non communs.
Cette solution doit être O (n), en supposant qu'il n'y a pas de collision dans la table de hachage.
créer une nouvelle liste vide. avoir une table de hachage et le remplir avec des éléments des deux listes. complexité n. puis passez en revue chaque liste séquentiellement et, pendant l'itération, placez ces éléments dans la nouvelle liste qui ne sont pas présents dans la table de hachage. complexité n. complexité globale = n
il y aurait aussi une complexité spatiale de n. – PratLee
- 1. jQuery: Obtenir les deux derniers éléments de la liste?
- 2. Comment obtenir les éléments et sous-éléments d'une liste?
- 3. XPATH Query: Comment obtenir deux éléments?
- 4. Liste liée d'intervalles
- 5. Linq éléments de sélection qui existent dans les deux liste
- 6. Comment obtenir les N premiers éléments d'une liste en C#?
- 7. Détection d'événements rares
- 8. Enregistrement d'une liste liée
- 9. Liste liée - Erreur
- 10. Impression de liste liée Java
- 11. Liste liée Récursion
- 12. Présentation d'une liste liée
- 13. Scala liste liée stackoverflow
- 14. C++ liste liée
- 15. Comment obtenir une liste avec des éléments contenus dans deux autres listes?
- 16. Comment obtenir la liste des éléments de wxpython ListBox
- 17. combiner les éléments de la liste
- 18. Comment obtenir les premiers éléments X?
- 19. Comment trier une liste liée en SQL?
- 20. Faute de segmentation de liste liée C++
- 21. JQuery obtenir tous les éléments dans une liste
- 22. Comment obtenir les 10 premiers éléments triés d'une liste sans trier toute la liste
- 23. WPF/DeferRefresh avec la liste déroulante liée
- 24. Liste déroulante Liée Modifie le premier élément de la liste
- 25. Schéma Comment supprimer les éléments d'une liste?
- 26. Exemple de liste liée utilisant des threads
- 27. Style d'élément de liste - comment afficher les éléments dans deux rangées ..?
- 28. Comment puis-je imprimer deux fois les éléments d'une liste de manière récursive?
- 29. Classer les mots anglais en rares et communs
- 30. Liste liée n'imprimant pas la liste
Est-ce que c'est ce devoir? Si oui, merci de le marquer comme tel. De plus, les listes d'entrées sont-elles triées? – Pace