[Leetcode-Frage schreiben Tag 1] Aufzählungsmethode

Thema 1. Summe zweier Zahlen

Bei einem ganzzahligen Array „nums“ und einem ganzzahligen Zielwert „target“ suchen Sie bitte die beiden Ganzzahlen im Array, deren Summe der Zielwert „target“ ist, und geben Sie deren Array-Indizes zurück.

Sie können davon ausgehen, dass jede Eingabe nur einer Antwort entspricht. Allerdings darf dasselbe Element im Array in der Antwort nicht wiederholt vorkommen.

Sie können die Antworten in beliebiger Reihenfolge zurückgeben.

Beispiel 1:

Eingabe: nums = [2,7,11,15], Ziel = 9
Ausgabe: [0,1]
Erläuterung: Weil nums[0] + nums[1] == 9, gib [0, 1] zurück.

analysieren

  • Normale Praxis Aufzählung über eine Doppelschleife. Die Schleife der ersten Ebene zählt jeden Wert im Array auf, und die Schleife der zweiten Ebene bestimmt, ob jeder Wert gleich der Zielanzahl ist.
  • Optimierung Verwenden Sie eine Hash-Tabelle. Das Ziel in der Schleife der zweiten Ebene besteht darin, herauszufinden, ob es einen Wert gibt, der dem Ziel entspricht – num. Die Optimierungsmethode besteht darin, eine Hash-Tabelle zu verwenden, die die Komplexität von O(n) auf O(1) reduzieren kann. Die Verwendung einer Hash-Tabelle zum Nachschlagen bedeutet, eine Hash-Tabelle (Wörterbuch) zu erstellen, mit num als Schlüssel und dem Index als Wert. Wenn „target – num“ im Wörterbuch vorhanden ist (target – num in der Hashtabelle), können Sie den entsprechenden tiefgestellten Hash [target – num] direkt zurückgeben

Frage 2 204. Primzahlen zählen – LeetCode

Gibt bei einer gegebenen ganzen Zahl n die Anzahl aller Primzahlen zurück, die kleiner als eine nicht negative ganze Zahl n sind.
Beispiel 1:
Eingabe: n = 10
Ausgabe: 4
Erläuterung: Weniger Als Es gibt 4 Primzahlen von 10, das sind 2, 3, 5 und 7.

analysieren

  • AllgemeinesBestimmen Sie, ob eine Zahl eine Primzahl ist: Es gibt keine Faktoren von 2 bis sqrt(n) (das heißt, sie ist durch sie teilbar)
  • Allgemeine Praxis Durchlaufen Sie alle Zahlen, die kleiner als eine nicht negative ganze Zahl n sind, bestimmen Sie, ob es sich um Primzahlen handelt, und addieren Sie die Anzahl der Primzahlen. Die Zeitkomplexität beträgt O(nsqrt(n)
  • Sieb von Ehrstein Wenn eine Zahl x eine Primzahl ist, dann 2x, 3x, 4x…xx, x (x+1) sind keine Primzahlen. Wenn Sie also beurteilen, dass eine Zahl x eine Primzahl ist, können Sie alle Vielfachen von x herausfiltern. Keine davon ist eine Primzahl. -> Optimieren, um xx, x(x+1), x*(x+2)... herauszufiltern, weil 2x, 3x , 4x wurden nach 2, 3, 4 gefiltert.

Zusammenfassung häufiger Grammatikfehler

  1. range(i,j) ist links geschlossen und rechts offen
  2. Sie müssen math.sqrt() hinzufügen, bevor Sie sqrt() verwenden, das eine Gleitkommazahl zurückgibt. isqrt() gibt eine Ganzzahl zurück, die nicht größer als sqrt() ist.
  3. Definieren Sie ein Array der Länge n, initialisiert auf 0: list = [0] *n
  4. Bestimmen Sie, ob ein Wert im Wörterbuch vorhanden ist: x in der Hashtabelle
  5. Definieren Sie eine Menge: my_set = set(). Um Elemente zur Menge hinzuzufügen, verwenden Sie .add(x). Die Menge kann dedupliziert werden.
  6. x in die n-te Potenz erhoben: x**n (nicht x^n)

Supongo que te gusta

Origin blog.csdn.net/a61022706/article/details/134939671
Recomendado
Clasificación