Gängige 2D-Array-Muster
Teil des Abschnitts Logik & Ablauf der Java-Journey von Coddy — Lektion 8 von 59.
Bestimmte Muster treten häufig auf, wenn man mit 2D-Arrays arbeitet. Das Erkennen dieser Muster kann Ihnen helfen, Probleme effizienter zu lösen. Hier sind einige gängige Muster:
Diagonale Traversierung
Zugriff auf Elemente, bei denen der Zeilenindex dem Spaltenindex entspricht (matrix[i][i]), gibt Ihnen die Hauptdiagonale. Für die Gegen-Diagonale entspricht die Summe aus Zeilen- und Spaltenindex der Größe des Arrays minus 1 (matrix[i][size - 1 - i]).
Zum Beispiel:
1 2 3
4 5 6
7 8 9Durchlaufen der Hauptdiagonale (matrix[i][i]): 1, 5, 9
Durchlaufen der Antidiagonale (matrix[i][size - 1 - i]): 3, 5, 7
Randdurchlauf
Um die Rand-Elemente zu durchlaufen, halten Sie einen Index konstant (0 oder size - 1), während Sie über den anderen iterieren.
Um auf die obere Grenze zuzugreifen, iterieren Sie über die Spalten mit dem Zeilenindex fest auf 0.
Zum Beispiel:
1 2 3 4
5 6 7 8
9 10 11 12Randelemente: 1, 2, 3, 4, 8, 12, 11, 10, 9, 5 (alle außer 6 und 7)
Aufgabe
EinfachErstellen Sie eine Methode mit dem Namen printPatterns, die ein quadratisches 2D-Array von Ganzzahlen (matrix) als Eingabe nimmt und die folgenden Muster ausgibt:
- Hauptdiagonale: Geben Sie alle Elemente aus, bei denen der Zeilenindex dem Spaltenindex entspricht.
- Anti-Diagonale: Geben Sie alle Elemente aus, bei denen die Summe der Zeilen- und Spaltenindizes der Größe der Matrix minus 1 entspricht.
- Ränder: Geben Sie die Elemente der oberen, unteren, linken und rechten Ränder der Matrix aus.
Die Ausgabe sollte so aussehen:
Main Diagonal: 1 6 11 16
Anti-Diagonal: 4 7 10 13
Top Border: 1 2 3 4
Bottom Border: 13 14 15 16
Left Border: 1 5 9 13
Right Border: 4 8 12 16Spickzettel
Häufige Traversierungs-Muster für 2D-Arrays:
Diagonale Traversierung
Hauptdiagonale: matrix[i][i] (Zeilenindex gleich Spaltenindex)
Gegendiagonale: matrix[i][size - 1 - i] (Summe aus Zeilen- und Spaltenindex gleich size - 1)
1 2 3
4 5 6
7 8 9Hauptdiagonale: 1, 5, 9
Gegendiagonale: 3, 5, 7
Rand-Traversierung
Einen Index konstant halten (0 oder size - 1), während über den anderen iteriert wird:
- Oberer Rand: row = 0, Spalten iterieren
- Unterer Rand: row = size - 1, Spalten iterieren
- Linker Rand: column = 0, Zeilen iterieren
- Rechter Rand: column = size - 1, Zeilen iterieren
Probier es selbst
// Schreibe deinen Code nur innerhalb der Klasse. Schreibe keine main() oder Code außerhalb dieser Klasse.
class PrintPatterns {
public static void printPatterns(int[][] matrix) {
// Schreibe deinen Code hier
}
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Mehrdimensionale Arrays
Grundlagen der 2D-ArraysZugriff auf 2D-Array-ElementeVerschachtelte Schleifen mit 2D-ArraysZusammenfassung - 2D-ArraysMatrixaddition & SubtraktionJagged Arrays3D-Arrays und darüber hinausGängige 2D-Array-MusterZusammenfassung - Alles über Arrays2HashMap Teil 1
Was ist eine HashMap?Eine HashMap deklarierenWerte abrufenPrüfen, ob ein Schlüssel existiertWörterbücher modifizierenZusammenfassung - HashMap3HashMap Teil 2
HashMap-MethodenMit keySet() iterierenMit entrySet() iterierenVerschachtelte HashMapZusammenfassung - Lager verwaltenZusammenfassung - HashMap-Operationen6Erweiterter Steuerungsfluss
Beschriftete AnweisungenSwitch-AusdruckMusterabgleichSchutzklauselnZusammenfassung - Steuerungsfluss9Projekt - Einzigartiger Wortzähler
Texteingabe und SpeicherungWortverarbeitung