SQL implementiert LeetCode (180. Fortlaufende Zahlen)

SQL implementiert LeetCode (180. Fortlaufende Zahlen)

[LeetCode] 180. Aufeinanderfolgende Zahlen

Schreiben Sie eine SQL-Abfrage, um alle Zahlen zu finden, die mindestens dreimal hintereinander vorkommen.

+----+-----+
| ID | Nummer |
+----+-----+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 1 |
| 6 | 2 |
| 7 | 2 |
+----+-----+

Beispielsweise ist 1 in der obigen Protokolltabelle die einzige Zahl, die mindestens dreimal hintereinander vorkommt.

Diese Frage gibt uns eine Logs-Tabelle und fordert uns auf, die Zahlen zu finden, bei denen dieselbe Zahl dreimal hintereinander in der Spalte Num vorkommt. Da wir dieselbe Zahl dreimal finden müssen, müssen wir drei Tabelleninstanzen erstellen. Wir können l1 verwenden, um jeweils eine Schnittmenge mit l2 und l3 zu bilden, die nächste Position von l1 und l2s ID vergleichen und die nächsten beiden Positionen von l1 und l3 vergleichen und dann die Zahlen mit derselben Num zurückgeben:

Lösung 1:

Wählen Sie DISTINCT l1.Num FROM Logs l1
JOIN-Protokolle l2 ON l1.Id = l2.Id - 1
JOIN-Protokolle l3 ON l1.Id = l3.Id - 2
WO l1.Num = l2.Num UND l2.Num = l3.Num;

Die folgende Methode verwendet kein Join, sondern sucht direkt in den Instanzen der drei Tabellen und schränkt dann die vier Bedingungen ein, um das richtige Ergebnis zurückzugeben:

Lösung 2:

Wählen Sie DISTINCT l1.Num FROM Logs l1, Logs l2, Logs l3
WO l1.Id = l2.Id - 1 UND l2.Id = l3.Id - 1
UND l1.Num = l2.Num UND l2.Num = l3.Num;

Schauen wir uns eine ganz andere Methode an. Die Variablen count und pre werden verwendet und auf 0 bzw. -1 initialisiert. Dann ist zu beachten, dass die IF-Anweisung verwendet wird. Die IF-Anweisung in MySQL unterscheidet sich von der if-Anweisung in anderen uns bekannten Sprachen. Sie entspricht dem bekannten ternären Operator a?b:c. Wenn a wahr ist, gibt sie b zurück, andernfalls gibt sie c zurück. Schauen wir uns dann zuerst die erste Zahl 1 in der Spalte Num an. Da pre auf -1 initialisiert ist, was sich von der aktuellen Num unterscheidet, wird count zu diesem Zeitpunkt 1 zugewiesen und pre wird zu diesem Zeitpunkt 1 zugewiesen. Dann kommt die zweite 1 in der Spalte Num herein und pre ist zu diesem Zeitpunkt gleich Num. Count erhöht sich um 1. Wenn die dritte 1 in der Spalte Num hereinkommt, erhöht sich count auf 3. Zu diesem Zeitpunkt ist die Where-Bedingung erfüllt, tn >= 3, also wird 1 ausgewählt. Und so weiter, wobei die gesamte Num durchlaufen wird, um das Endergebnis zu erhalten:

Lösung 3:

Wählen Sie eine unterschiedliche Zahl aus (
WÄHLEN Sie Num, @count := WENN(@pre = Num, @count + 1, 1) AS n, @pre := Num
AUS Protokollen, (SELECT @count := 0, @pre := -1) AS init
) ALS t, wobei tn >= 3;

Quellen:

https://leetcode.com/discuss/54463/simple-solution

https://leetcode.com/discuss/87854/simple-sql-with-join-1484-ms

https://leetcode.com/discuss/69767/two-solutions-inner-join-and-two-variables

Dies ist das Ende dieses Artikels über die SQL-Implementierung von LeetCode (180. Kontinuierliche Zahlen). Weitere relevante Inhalte zur SQL-Implementierung von kontinuierlichen Zahlen finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • SQL-Implementierung von LeetCode (196. Doppelte Postfächer löschen)
  • SQL-Implementierung LeetCode (185. Top drei der höchsten Gehälter in der Abteilung)
  • SQL-Implementierung von LeetCode (184. Das höchste Gehalt der Abteilung)
  • SQL-Implementierung von LeetCode (183. Kunden, die noch nie eine Bestellung aufgegeben haben)
  • SQL-Implementierung von LeetCode (182. Doppelte Postfächer)
  • SQL-Implementierung von LeetCode (181. Angestellte verdienen mehr als Manager)
  • C++-Implementierung von LeetCode (179. Maximale Anzahl an Kombinationen)
  • SQL-Implementierung von LeetCode (197. Steigende Temperatur)

<<:  Design-Sharing der Download-Seite des Pengyou.com-Mobilclients (Bild und Text)

>>:  Teilen Sie JS vier lustige Hacker-Hintergrundeffektcodes

Artikel empfehlen

Vue implementiert Chat-Schnittstelle

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Erklärung des Übergangsattributs einer einfachen CSS-Animation

1. Verständnis der Übergangsattribute 1. Das Über...

Analysieren Sie, wie Uniapp den Schnittstellendomänennamen dynamisch erhält

Hintergrund Der Domänenname der Schnittstelle ist...

Dinge, die Sie nicht über die CSS-Pseudoelemente ::before und ::after wissen

CSS hat zwei Pseudoklassen, die nicht häufig verw...

Zusammenfassung einiger Tipps zum Umgehen der Node.js-Codeausführung

Inhaltsverzeichnis 1. untergeordneter Prozess 2. ...

jQuery implementiert einen Zeitselektor

In diesem Artikelbeispiel wird der spezifische Co...

Muss MySql ein Commit durchführen?

Ob MySQL bei der Ausführung von Vorgängen wie Ein...

Schritte zum Upgrade von CentOS6 auf Glibc

Inhaltsverzeichnis Hintergrund Kompilieren Sie gl...

So verwenden Sie die Vue3-Komponente zum asynchronen Laden von Daten Suspense

Inhaltsverzeichnis Vorwort Komponenten erstellen ...

Eine kurze Erläuterung zur Verwendung von Slots in Vue

Definition und Verwendung: Verwenden Sie die Slot...

Beheben Sie den Nginx-Fehler „504 Gateway Time-out“

Studenten, die Websites erstellen, stellen häufig...