Ich muss eine Datenstruktur beschreiben, die bestimmen kann, wo eine bestimmte ganze Zahl in einer Menge in O (1) erwartete Zeit und O (logn) worst case auch verbrauchen O (n) Raum. Ich habe mir eine Tabelle angesehen, die gängige Datenstrukturen und große Zeit/Raum-Komplexitäten enthält, aber ich kann anscheinend keine finden, die diesen Anforderungen entsprechen. Gibt es eine Möglichkeit, eine BST zu modifizieren, um diese Anforderungen zu erfüllen?Bestimmen, ob eine ganze Zahl in einer Menge in O (1) erwarteter Zeit und O (logn) worst case
Antwort
Wenn @Carcigenicate kommentiert wurde, zeigt eine Hashmap das von Ihnen gewünschte Verhalten an. Es hat eine konstante Lookup-Zeit O(1)
, außer im Falle von Kollisionen. Im Falle von Kollisionen erstellen Hashmaps typischerweise eine Liste von Elementen für einen bestimmten Bucket. Im schlimmsten Fall würde sich eine Hashmap wie eine Liste verhalten. Dies würde jedoch eine Worst-Case-Suchzeit von O(n)
bedeuten, die nicht zu Ihrer Anforderung passt.
Java, in seiner neuesten 8 Version, ausgesetzt eine HashMap
Klasse, die ausgewogene Bäume anstelle von Listen verwendet, um Elemente zu speichern, die mit dem gleichen Eimer kollidieren. Dies garantiert eine Worst-Case-Suchzeit von O(logn)
.
Also, um Ihr Problem zu lösen, müssten Sie die Implementierung einer hashmap ändern, um Bäume für Kollisionen zu verwenden. Wenn Sie Java 8 verwenden, ist das Leben bereits gut und Sie können einfach mit HashMap
laufen.
ahh ich sehe so anstatt eine verkettete Liste, sie einfach nur für einen Baum? – 101ldaniels
@ 101ldaniels Ja, tun dies und dann resultierende hashmap sollte sich im Einklang mit dem, was Sie brauchen, verhalten. –
Ich denke, das 'O (log n)' gilt nur, wenn Ihre Schlüssel 'Comparable' implementieren, andernfalls kann es immer noch zu 'O (n) 'degenerieren. – TilmannZ
- 1. Große O-Zeit-Komplexität von Worst-Case-Quick-Sort?
- 2. 2D-Peak-Finding-Algorithmus in O (n) Worst-Case-Zeit?
- 3. ListBox.FindString Was ist die Worst-Case-Laufzeit? O (n), O (n log n), O (1) & rarr;
- 4. Finden der kleinsten positiven Zahl in O (nlogn) und O (logn) zusätzlicher Speicherplatz
- 5. Zeitkomplexität: O (logN) oder O (N)?
- 6. O (logn) und Algorithmus Beziehung
- 7. Bg O Notation: n * logn
- 8. Warum ist die Worst-Case-Komplexität des Löschens des letzten Elements in einem Array O (1) und nicht O (n)? /?
- 9. Implementieren von Verringerungsschlüssel mit STL-Heap in O (logn) -Zeit
- 10. Sortieren von 10 Millionen Objekten in O (n) Zeit und O (1) extra Speicher
- 11. difultyfully Lösen eines Codes in O (logn)
- 12. Erkennen, ob in einer Zeichenkette Duplikate in O (n) Zeit und O (1) Speicher und keine Datenstrukturen vorhanden sind
- 13. Worst Case-Zeit Komplexität für den Code
- 14. Worst time Komplexität (Big O) für 1 für Schleife
- 15. Links Elemente in einem Array mit Komplexität O (n) und Zeit drehen O (1)
- 16. Warteschlange <T> O (1) Zeit
- 17. C# Fractional Rucksack o (n Logn) Lösung
- 18. Fundnummer, die in O (n) O (1) Raum
- 19. Finden Sie die maximale Wiederholungszahl in O (n) Zeit und O (1) Extraraum
- 20. Größter gemeinsamer Faktor in o (1)?
- 21. O (1) Beispiel einer Konstantenzeitlösung?
- 22. Dividieren Algorithmus zur Binärzahl mit der Laufzeit von O (logn)
- 23. Was ist die zeitliche Komplexität dieser Lösung O (N) oder O (LogN)?
- 24. O (1) Hash-Lookups?
- 25. Computing Worst-Case-Zeit Komplexität mit Algorithmen
- 26. Warum ist TreeSet Iteration O (n) anstelle von O (n * logn)?
- 27. C++ Splitting Liste in O (n) anstelle von O (1)
- 28. Ein Min-Heap mit besser als O (logn) erhöhen Schlüssel?
- 29. Schnelle Sortierung Worst Case
- 30. C: Setzen des i-ten Bits einer ganzen Zahl auf 1 in O (1)
Dies beschreibt eine hashmap/set. – Carcigenicate
worst case ist O (n) für hashmap/set nicht O (logn) @Carcigenicate – 101ldaniels