Heim > Backend-Entwicklung > PHP-Tutorial > . Spiralmatrix III

. Spiralmatrix III

王林
Freigeben: 2024-08-09 09:18:51
Original
712 Leute haben es durchsucht

885. Spiralmatrix III

Mittel

Themen:Array, Matrix, Simulation

Sie beginnen an der Zelle (rStart, cStart) eines nach Osten ausgerichteten Rasters mit Zeilen x Spalten. Die nordwestliche Ecke befindet sich in der ersten Zeile und Spalte im Raster und die südöstliche Ecke befindet sich in der letzten Zeile und Spalte.

Sie gehen spiralförmig im Uhrzeigersinn, um jede Position in diesem Raster zu besuchen. Immer wenn Sie sich außerhalb der Gittergrenze bewegen, setzen wir unseren Spaziergang außerhalb des Gitters fort (kehren jedoch möglicherweise später zur Gittergrenze zurück). Schließlich erreichen wir alle Zeilen * Spalten und Leerzeichen des Rasters.

Gibt ein Array von Koordinaten zurück, die die Positionen des Gitters in der Reihenfolge darstellen, in der Sie sie besucht haben.

Beispiel 1:

. Spiral Matrix III

  • Eingabe: Zeilen = 1, Spalten = 4, rStart = 0, cStart = 0
  • Ausgabe: [[0,0],[0,1],[0,2],[0,3]]

Beispiel 2:

. Spiral Matrix III

  • Eingabe: Zeilen = 5, Spalten = 6, rStart = 1, cStart = 4
  • Ausgabe: [[1,4],[1,5],[2,5],[2,4],[2,3],[1,3],[0,3] ,[0,4],[0,5],[3,5],[3,4],[3,3],[3,2],[2,2],[1,2],[ 0,2],[4,5],[4,4],[4,3],[4,2],[4,1],[3,1],[2,1],[1, 1],[0,1],[4,0],[3,0],[2,0],[1,0],[0,0]]

Einschränkungen:

  • 1 <= Zeilen, Spalten <= 100
  • 0 <= rStart < Zeilen
  • 0 <= cStart < cols

Lösung:

Um dieses Problem zu lösen, können wir die folgenden Schritte ausführen:

  1. Richtungsanordnung: Verwenden Sie eine Richtungsanordnung, um die Bewegung in der richtigen Reihenfolge (Ost → Süd → West → Nord) zu erleichtern. Jede Richtung hat eine entsprechende Änderung in den Zeilen- und Spaltenindizes.
  2. Schritteverwaltung: Sie müssen steuern, wie viele Schritte Sie in jede Richtung unternehmen müssen. Zunächst bewegst du dich 1 Schritt nach Osten, dann 1 Schritt nach Süden, 2 Schritte nach Westen, 2 Schritte nach Norden und so weiter.
  3. Grenzprüfung: Stellen Sie sicher, dass Sie nach jeder Bewegung prüfen, ob die neue Position innerhalb der Rastergrenzen liegt. Wenn ja, fügen Sie es dem Ergebnisarray hinzu.
  4. Stoppbedingung: Stoppen Sie die Schleife, sobald Sie alle Zeilen * Spaltenpositionen besucht haben.

Lassen Sie uns diese Lösung in PHP implementieren: 885. Spiralmatrix III






Erläuterung:

  1. Richtungen: Das Richtungsarray enthält die Änderung in Zeile und Spalte für die Bewegung nach Osten, Süden, Westen und Norden.
  2. Bewegung: Wir beginnen bei (rStart, cStart) und bewegen uns entsprechend den Richtungen im Spiralmuster.
  3. Grenzprüfung: Fügen Sie die Position nur dann zum Ergebnis hinzu, wenn sie innerhalb des Rasters liegt.
  4. Schrittkontrolle: StepCount verwaltet, wie viele Schritte in die aktuelle Richtung zurückgelegt werden, bevor abgewendet wird. Es erhöht sich nach zwei Runden.
  5. Beendigung: Die Schleife wird fortgesetzt, bis alle Positionen im Raster besucht wurden.

Dieser Ansatz stellt sicher, dass wir jede Zelle im Raster in der erforderlichen Spiralreihenfolge besuchen.

Kontaktlinks

Wenn Sie diese Serie hilfreich fanden, denken Sie bitte darüber nach, dem Repository einen Stern auf GitHub zu geben oder den Beitrag in Ihren bevorzugten sozialen Netzwerken zu teilen? Ihre Unterstützung würde mir sehr viel bedeuten!

Wenn Sie weitere hilfreiche Inhalte wie diesen wünschen, folgen Sie mir gerne:

  • LinkedIn
  • GitHub

Das obige ist der detaillierte Inhalt von. Spiralmatrix III. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage