SprintCode.pro

Подготовка к алгоритмическим задачам

Super

Spiral Matrix (Спиральный обход матрицы)

Описание: Дана матрица. Верните все её элементы в порядке обхода по спирали: слева направо по верхней строке, сверху вниз по правому столбцу, справа налево по нижней строке и так далее.

Пример 1:

Вход: matrix = [[1,2,3],[4,5,6],[7,8,9]]
Выход: [1,2,3,6,9,8,7,4,5]
Объяснение: —

Пример 2:

Вход: matrix = [[1,2],[3,4]]
Выход: [1,2,4,3]
Объяснение: —

Ограничения:

1 <= число строк, столбцов <= 10

-100 <= matrix[i][j] <= 100

Рекомендуемая временная и пространственная сложность

O(m · n) по времени, O(1) дополнительной памяти.


Подсказка 1

Заведите четыре границы: верх, низ, лево, право.


Подсказка 2

После прохода по верхней строке сдвиньте верхнюю границу вниз, и так для каждой стороны.


Подсказка 3

Перед проходом по нижней строке и левому столбцу проверьте, что границы не сомкнулись — иначе элементы обойдутся дважды.

Задача на аккуратную работу с границами двумерного массива. Учит вести четыре указателя и не допускать повторного обхода строк при нечётных размерах.

Входные параметры :

[[1,2,3],[4,5,6],[7,8,9]]

Ожидаемый результат

[1,2,3,6,9,8,7,4,5]