Menu
Coddy logo textTech

Распространённые паттерны 2D-массивов

Часть раздела Логика и управление потоком путешествия по Java на Coddy — урок 8 из 59.

При работе с двумерными массивами часто встречаются определенные шаблоны. Умение распознавать эти шаблоны поможет вам решать задачи более эффективно. Вот несколько распространенных шаблонов:

Диагональный обход

Доступ к элементам, у которых индекс строки равен индексу столбца (matrix[i][i]), дает вам главную диагональ. Для побочной диагонали сумма индексов строки и столбца равна размеру массива минус 1 (matrix[i][size - 1 - i]).

Например:

1  2  3
4  5  6
7  8  9

Пройти по главной диагонали (matrix[i][i]): 1, 5, 9
Пройти по побочной диагонали (matrix[i][size - 1 - i]): 3, 5, 7

Обход по периметру

Чтобы обойти граничные элементы, вы оставляете один индекс постоянным (0 или size - 1), перебирая другой.

Чтобы получить доступ к верхней границе, вы перебираете столбцы с индексом строки, фиксированным на 0.

Например:

1  2  3  4
5  6  7  8
9 10 11 12

граничные элементы: 1, 2, 3, 4, 8, 12, 11, 10, 9, 5 (все, кроме 6 и 7)

challenge icon

Задание

Легко

Создайте метод с именем printPatterns, который принимает квадратный двумерный массив целых чисел (matrix) в качестве входных данных и выводит следующие шаблоны:

  1. Main Diagonal: выведите все элементы, у которых индекс строки равен индексу столбца.
  2. Anti-Diagonal: выведите все элементы, у которых сумма индексов строки и столбца равна размеру матрицы минус 1.
  3. Borders: выведите элементы верхней, нижней, левой и правой границ матрицы.

Вывод должен выглядеть следующим образом:

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 16

Попробуйте сами

// Пишите свой код только внутри класса. Не пишите main() или какой-либо код вне этого класса.
class PrintPatterns {
    public static void printPatterns(int[][] matrix) {
        // Напишите свой код здесь
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком