💡Задача: "Матрица спирали"
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