[LeetCode] 180. Aufeinanderfolgende ZahlenSchreiben Sie eine SQL-Abfrage, um alle Zahlen zu finden, die mindestens dreimal hintereinander vorkommen.
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:
|
<<: Design-Sharing der Download-Seite des Pengyou.com-Mobilclients (Bild und Text)
>>: Teilen Sie JS vier lustige Hacker-Hintergrundeffektcodes
In diesem Artikelbeispiel wird der spezifische Co...
erinnern: IDE-Festplatte: Die erste Festplatte is...
1. Verständnis der Übergangsattribute 1. Das Über...
Hintergrund Der Domänenname der Schnittstelle ist...
CSS hat zwei Pseudoklassen, die nicht häufig verw...
Inhaltsverzeichnis 1. untergeordneter Prozess 2. ...
In diesem Artikelbeispiel wird der spezifische Co...
Ob MySQL bei der Ausführung von Vorgängen wie Ein...
Inhaltsverzeichnis Hintergrund Kompilieren Sie gl...
Inhaltsverzeichnis Vorwort Komponenten erstellen ...
MySQL ist eine sehr leistungsfähige relationale D...
Definition und Verwendung: Verwenden Sie die Slot...
Als ich heute ein kleines Programm schrieb, benut...
Zip-Installationsschritte für die MySQL 8-Windows...
Studenten, die Websites erstellen, stellen häufig...