Typowe wzorce dla tablic 2D
Część sekcji Logika i przepływ sterowania ścieżki Java w Coddy. Lekcja 8 z 59.
Podczas pracy z tablicami 2D często pojawiają się pewne wzorce. Rozpoznawanie tych wzorców może pomóc Ci skuteczniej rozwiązywać problemy. Oto kilka popularnych wzorców:
Przechodzenie po przekątnej
Dostęp do elementów, w których indeks wiersza jest równy indeksowi kolumny (matrix[i][i]), umożliwia odczytanie głównej przekątnej. W przypadku przekątnej przeciwnej suma indeksów wiersza i kolumny jest równa rozmiarowi tablicy pomniejszonemu o 1 (matrix[i][size - 1 - i]).
Na przykład:
1 2 3
4 5 6
7 8 9Przejdź po głównej przekątnej (matrix[i][i]): 1, 5, 9
Przejdź po przeciwprzekątnej (matrix[i][size - 1 - i]): 3, 5, 7
Przechodzenie po krawędzi
Aby przejść przez elementy na krawędzi, utrzymujesz jeden indeks jako stały (0 lub size - 1), iterując po drugim.
Aby uzyskać dostęp do górnej krawędzi, iterujesz po kolumnach, ustalając indeks wiersza na 0.
Na przykład:
1 2 3 4
5 6 7 8
9 10 11 12elementy obramowania: 1, 2, 3, 4, 8, 12, 11, 10, 9, 5 (wszystkie oprócz 6 i 7)
Wyzwanie
ŁatwyUtwórz metodę o nazwie printPatterns, która przyjmuje jako dane wejściowe kwadratową tablicę 2D liczb całkowitych (matrix) i wyświetla następujące wzorce:
- Przekątna główna: Wyświetl wszystkie elementy, dla których indeks wiersza jest równy indeksowi kolumny.
- Przekątna przeciwna: Wyświetl wszystkie elementy, dla których suma indeksów wiersza i kolumny jest równa rozmiarowi macierzy pomniejszonemu o 1.
- Krawędzie: Wyświetl elementy górnej, dolnej, lewej i prawej krawędzi macierzy.
Wynik powinien wyglądać tak:
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 16Spróbuj swoich sił
// Napisz kod wyłącznie wewnątrz klasy. Nie pisz main() ani żadnego kodu poza tą klasą.
class PrintPatterns {
public static void printPatterns(int[][] matrix) {
// Napisz tutaj swój kod
}
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Tablice wielowymiarowe
Podstawy tablic 2DDostęp do elementów tablic 2DPętle zagnieżdżone z tablicami 2DPodsumowanie — tablice 2DDodawanie i odejmowanie macierzyTablice postrzępioneTablice 3D i większeTypowe wzorce dla tablic 2DPodsumowanie — wszystko o tablicach2HashMap część 1
Czym jest HashMap?Deklarowanie HashMapDostęp do wartościSprawdzanie, czy klucz istniejeModyfikowanie słownikówPodsumowanie — HashMap3HashMap — część 2
Metody HashMapIterowanie za pomocą keySet()Iterowanie za pomocą entrySet()Zagnieżdżona HashMapPowtórka — zarządzanie magazynemPowtórka — operacje na HashMap6Zaawansowany przepływ sterowania
Instrukcje etykietująceWyrażenie switchDopasowywanie wzorcówKlauzule ochronnePowtórzenie — przepływ sterowania9Projekt — licznik unikalnych słów
Wprowadzanie i przechowywanie tekstuPrzetwarzanie słówPoćwicz samodzielnie: Kompilator Java online