Menu
CoddyTech

Spiral Matrix

Дана матрица целых чисел с m строками и n столбцами, представленная в виде списка строк. Верните все её значения в порядке обхода по спирали.

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

Функция

spiralOrder(matrix: integer-2d-array) → integer-array
matrixinteger-2d-array
сетка целых чисел в виде списка строк одинаковой длины
Возвращаетinteger-array
каждое значение матрицы по спирали по часовой стрелке, начиная с верхнего левого угла

Ограничения

  • 1 ≤ m, n ≤ 80, где m = matrix.length и n = matrix[i].length
  • Каждая строка имеет одинаковую длину n.
  • -100 ≤ matrix[i][j] ≤ 100

Примеры

Ввод
matrix = [[1, 2, 3], [10, 11, 4], [9, 12, 5], [8, 7, 6]]
Вывод
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
Пояснение
Значения возрастают вдоль спирали. Во внешнем кольце сверху расположены 1, 2, 3, справа вниз идут 4, 5, 6, по низу обратно — 7, 8, а слева вверх — 9, 10. Внутренний слой — это один столбец, который читается один раз сверху вниз: 11, 12.

lock icon+15 скрытых тестов при отправке

challenge icon

Дополнительный вопрос

Можешь вместо этого вернуть значения против часовой стрелки, начиная с верхнего левого угла и сначала проходя вниз по левому столбцу?

Сбросить код
def spiralOrder(matrix):
    # Напишите код здесь
Тестовые случаи

Случай 1

Случай 2

Случай 3

Ввод

matrix = [[1, 2, 3], [10, 11, 4], [9, 12, 5], [8, 7, 6]]

Ожидается

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