Heim >Backend-Entwicklung >PHP-Tutorial >Spiralmatrix IV
2326. Spiralmatrix IV
Schwierigkeit:Mittel
Themen: Array, verknüpfte Liste, Matrix, Simulation
Sie erhalten zwei ganze Zahlen m und n, die die Dimensionen einer Matrix darstellen.
Sie erhalten außerdem den Kopf einer verknüpften Liste von ganzen Zahlen.
Generieren Sie eine m x n-Matrix, die die ganzen Zahlen in der verknüpften Liste enthält, die in spiralförmiger Reihenfolge (im Uhrzeigersinn) dargestellt werden, beginnend oben links der Matrix . Wenn noch Leerzeichen vorhanden sind, füllen Sie diese mit -1.
Gib die generierte Matrix zurück.
Beispiel 1:
Beispiel 2:
Beispiel 3:
Einschränkungen:
Hinweis:
Lösung:
Wir simulieren eine spiralförmige Durchquerung einer m x n-Matrix und füllen sie mit Werten aus einer verknüpften Liste. Die verbleibenden Positionen, die keine entsprechenden verknüpften Listenwerte haben, werden mit -1 gefüllt.
So ist die Lösung aufgebaut:
Lassen Sie uns diese Lösung in PHP implementieren: 2326. Spiralmatrix IV
val = $val; $this->next = $next; } } /** * @param Integer $m * @param Integer $n * @param ListNode $head * @return Integer[][] */ function spiralMatrix($m, $n, $head) { ... ... ... /** * go to ./solution.php */ } // Helper function to print the matrix (for debugging) function printMatrix($matrix) { foreach ($matrix as $row) { echo implode(" ", $row) . "\n"; } } // Example usage: // Create the linked list: [3,0,2,6,8,1,7,9,4,2,5,5,0] $head = new ListNode(3); $head->next = new ListNode(0); $head->next->next = new ListNode(2); $head->next->next->next = new ListNode(6); $head->next->next->next->next = new ListNode(8); $head->next->next->next->next->next = new ListNode(1); $head->next->next->next->next->next->next = new ListNode(7); $head->next->next->next->next->next->next->next = new ListNode(9); $head->next->next->next->next->next->next->next->next = new ListNode(4); $head->next->next->next->next->next->next->next->next->next = new ListNode(2); $head->next->next->next->next->next->next->next->next->next->next = new ListNode(5); $head->next->next->next->next->next->next->next->next->next->next->next = new ListNode(5); $head->next->next->next->next->next->next->next->next->next->next->next->next = new ListNode(0); $m = 3; $n = 5; $matrix = spiralMatrix($m, $n, $head); printMatrix($matrix); ?>Erläuterung:
Matrix-Initialisierung: Die Matrix wird mit -1 initialisiert, sodass alle nicht ausgefüllten Leerzeichen standardmäßig -1 bleiben.
Spiralbewegung:
- Der Richtungsvektor dirs verwaltet Bewegungen in vier Richtungen: rechts, unten, links und oben.
- Der Index dirIndex verfolgt die aktuelle Richtung. Nachdem wir uns in eine Richtung bewegt haben, berechnen wir die nächste Position und prüfen, ob sie gültig ist. Wenn nicht, ändern wir die Richtung.
Verknüpfte Listendurchquerung:
- Wir durchlaufen die Knoten der verknüpften Liste und platzieren Werte nacheinander in der Matrix, wobei wir der Spiralreihenfolge folgen.
Grenz- und Richtungsänderung:
- Wenn wir auf eine ungültige Position stoßen (außerhalb der Grenzen oder bereits besetzt), drehen wir die Richtung um 90 Grad (d. h. ändern den Richtungsvektor).
Zeitkomplexität:
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:
Das obige ist der detaillierte Inhalt vonSpiralmatrix IV. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!