Big-O - Um einem HashSet ein Element hinzuzufügen, ist die Komplexität O (1), und wie bestimmt ein HashSet, ob das hinzuzufügende Element eindeutig ist oder nicht? DieseWenn Hashset 'add' Komplexität ist O (1), wie einzigartige Elemente gespeichert werden?
Antwort
hängt von der Wahl der Hash-Tabelle, aber in den meisten traditionellen Implementierungen von Hash-Tabellen (lineare Sondieren, angekettet Hashing, quadratische Sondierung, etc.) die Kosten für eine Insertion tun ist auf Erwartung O (1) eher als worst-case O (1). Der O (1) -Term kommt hier aus der Tatsache, dass im Durchschnitt im Durchschnitt nur eine konstante Anzahl von Elementen in der Hash-Tabelle beim Einfügen eines neuen Wertes betrachtet werden muss. Beim linearen Sondieren geschieht dies, weil die erwartete Länge des Laufs der zu überprüfenden Elemente O (1) ist, und bei verkettetem Hashing liegt es daran, dass nur erwartete O (1) -Elemente in dem betreffenden Bucket vorhanden sind. Die Hash-Tabelle kann dann prüfen, ob das neu eingefügte Element einem dieser Werte entspricht, wenn eine Einfügung durchgeführt wird. Wenn ja, wissen wir, dass es ein Duplikat ist. Wenn nicht, wissen wir, dass das neue Element kein Duplikat sein kann. Wir haben jedes Element überprüft, das möglicherweise gleich sein könnte. Das bedeutet, dass im Durchschnitt die Kosten einer Einfügung O (1) und wir zum Zeitpunkt der Insertion auf Eindeutigkeit prüfen können.
- 1. Wie ist LinkedList add (int, E) O (1) Komplexität?
- 2. Adjazenzliste mit O (1) Nachschlagen mit HashSet?
- 3. Ist Enumerable.ElementAt <TSource> O (1) für HashSet?
- 4. Links Elemente in einem Array mit Komplexität O (n) und Zeit drehen O (1)
- 5. Mergesort Komplexität O (nlogn) + O (n)?
- 6. Große O-Komplexität, wenn zwei Funktionen f (n) [O (1)] und g (n) [O (n)] miteinander multipliziert werden
- 7. Tricky Big-O Komplexität
- 8. Was ist die O() Komplexität dieser Funktion?
- 9. Komplexität auf rekursivem Big-O
- 10. Worst time Komplexität (Big O) für 1 für Schleife
- 11. O (1) Hash-Lookups?
- 12. Wie ist die zeitliche Komplexität des folgenden Codes O (n)?
- 13. Große O-Komplexität des Algorithmus
- 14. Was ist die Big-O-Komplexität meines Codes?
- 15. Warum ist die Worst-Case-Komplexität des Löschens des letzten Elements in einem Array O (1) und nicht O (n)? /?
- 16. Wie Elemente im Array gespeichert werden?
- 17. PyCharm - Add "-O" Flag
- 18. Ändern Komplexität von O (n) bis O (log n)
- 19. Wie bekomme ich einzigartige Elemente?
- 20. ist die asymptotische Zeit Komplexität dieses Algorithmus O (log n)?
- 21. Vereinfachung der Big-O-Komplexität dieses Exponentialalgorithmus
- 22. Warum ist die Laufzeit für add-before für doppelt verkettete Listen O (1)?
- 23. Big-O Komplexität eines Stücks Code
- 24. Sollte ich memmove() O (n) oder O (1) betrachten?
- 25. Finding komplizierte einzigartige Elemente
- 26. O (1) term look up
- 27. Warum ist die Zeit Komplexität von Pythons list.append() Methode O (1)?
- 28. Rekursive Find Big O Zeit Komplexität
- 29. Warum ist die Komplexität von Karatsuba O (n^2) nicht?
- 30. COINCHANGE: Dynamische Programmierung O (N) Komplexität
Fragen Sie über Hash-Tabelle Datenstruktur im Allgemeinen oder über bestimmte Implementierung? Und es gibt keine Magie, die Einfügeoperation in eine Hashtabelle ist im schlimmsten Fall nicht "O (1)". https://en.wikipedia.org/wiki/Hash_table – DAle