💡Задача: "Матрица спирали"

💡Задача: "Матрица спирали"

https://t.me/pythonl


Условие задачи: дан двумерный массив, надо вернуть все его элементы в "спиральном" порядке по часовой стрелке. 

Пример:

Ввод: matrix = [[1,2,3],[4,5,6],[7,8,9]]

Вывод: [1,2,3,6,9,8,7,4,5]


Ввод: matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]

Вывод: [1,2,3,4,8,12,11,10,9,5,6,7]


📌Решение


Пишите свое решение в комментариях👇


class Solution:
    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        spiralOrder = []
        n, m = len(matrix), len(matrix[0])
        r, c, dr, dc = 0, 0, 0, 1
        while len(spiralOrder) < n * m:
            spiralOrder.append(matrix[r][c])
            matrix[r][c] = float('inf')
            if not(0 <= r + dr < n) or not(0 <= c + dc < m) or matrix[r + dr][c + dc] == float('inf'):
                dr, dc = dc, -dr
            r += dr
            c += dc
        return spiralOrder


Report Page