Ich stieß auf eine Frage, wenn ich this LeetCode problem lösen. Obwohl meine Lösung vom System akzeptiert wurde, habe ich immer noch keine Idee, nachdem ich online nach der folgenden Frage gesucht habe: What is the time complexity of dict.keys() operation?
Gibt es eine Ansicht der Schlüssel oder eine echte Liste (speichert im Speicher) der Schlüssel zurück?Was ist die zeitliche Komplexität von dict.keys() in Python?
Antwort
In Python 2 ist es O (n), und es erstellt eine neue Liste. In Python 3 ist es O (1), aber es gibt keine Liste zurück. Um ein zufälliges Element aus dem keys
eines Dikters zu zeichnen, müssen Sie es in eine Liste konvertieren.
Es klingt, als ob Sie wahrscheinlich random.choice(d.keys())
für Teil 3 dieses Problems verwendet haben. Wenn ja, war das O (n), und du hast es falsch verstanden. Sie müssen entweder Ihre eigene Hash-Tabelle implementieren oder eine separate Liste von Elementen verwalten, ohne die durchschnittlichen O (1) -Einfügungen und Löschungen zu vernachlässigen.
Ich habe 'return self.elements.keys() [randint (0, len (self.elements) - 1)]' 'und es wurde akzeptiert (' self.elements ist ein dict-Objekt'). – Jason
@Jason: Ja, das ist nicht O (1). – user2357112
Wie du gesagt hast "In Python 3 ist es O (1)". Wenn 'self.elements.keys()' 'O (1) 'ist, würde der gesamte Ausdruck in' O (1) 'laufen. Wenn ich Fehler gemacht habe, korrigiere mich bitte :) – Jason
- 1. Was ist die zeitliche Komplexität von zip() in Python?
- 2. Was ist die zeitliche Komplexität dieser Blasensortierfunktion?
- 3. Was ist die zeitliche Komplexität dieser Funktion?
- 4. Was ist die zeitliche Komplexität meiner Funktion?
- 5. Was ist die zeitliche Komplexität von parseInt() in JavaScript?
- 6. Was ist die zeitliche Komplexität von lastIndexOf in Java?
- 7. Was ist die zeitliche Komplexität einer Liste für die Konvertierung?
- 8. Was ist die zeitliche Komplexität von Linq OrderBy(). ThenBy() Methodenfolge?
- 9. Was ist die zeitliche Komplexität des Zusammenführungsschritts von Mergesort?
- 10. Was ist die zeitliche Komplexität der Zählfunktion in clojure?
- 11. Was wäre die zeitliche Komplexität und warum?
- 12. Was ist die zeitliche Komplexität des folgenden Codes?
- 13. Was ist die zeitliche Komplexität der Array-Initialisierung?
- 14. Ist die zeitliche Komplexität dieses Codes korrekt?
- 15. Was ist die zeitliche Komplexität des gegebenen Codes?
- 16. Was ist die zeitliche Komplexität dieser beiden verschachtelten For-Schleifen?
- 17. Was ist die zeitliche Komplexität des folgenden Codes?
- 18. Was ist die zeitliche Komplexität des folgenden Ausdrucks?
- 19. Wie hoch ist die zeitliche Komplexität von int ('1010', 2)?
- 20. Wie ist die zeitliche Komplexität von gcd Θ (logn)?
- 21. Was wäre die zeitliche Komplexität des folgenden Algorithmus?
- 22. Wie hoch ist die zeitliche Komplexität von Popup-Elementen in Python?
- 23. Wie hoch ist die zeitliche Komplexität dieser NumberComplement-Funktion?
- 24. Was ist die zeitliche Komplexität von Pythons Suchoperation "some_element in some_list"?
- 25. Wie berechnet man die zeitliche Komplexität?
- 26. Ist die zeitliche Komplexität dieser Funktion O (N)?
- 27. Wie hoch ist die zeitliche Komplexität der zweiten For-Schleife?
- 28. Ist die zeitliche Komplexität dieses Algorithmus O (N^2)?
- 29. Wie groß ist die zeitliche Komplexität dieses Pseudocodes?
- 30. Wie hoch ist die zeitliche Komplexität eines Time-Sharing-Sortieralgorithmus?
Die Komplexität ist '0 (1)' in Python 3.x. In Python 2.x gibt es eine Liste zurück, so dass es "0 (n)" braucht, um es zu füllen oder etwas nachzuschauen. – ozgur
Fragen Sie nach Python2 oder Python3? –
@ozgur - True, aber 'für _ in {} .keys(): pass 'ist' O (n) 'in beiden Versionen. –