Menu
CoddyTech

Spiral Matrix

Vous disposez d’une matrice d’entiers comportant m lignes et n colonnes, fournie sous forme de liste de lignes. Renvoyez toutes ses valeurs dans l’ordre spiralé.

Commencez dans le coin supérieur gauche et avancez vers la droite le long de la rangée du haut, puis vers le bas le long de la colonne de droite, vers la gauche le long de la rangée du bas et vers le haut le long de la colonne de gauche. Continuez à tourner en spirale vers l’intérieur dans le sens horaire jusqu’à ce que chaque valeur ait été lue exactement une fois.

Fonction

spiralOrder(matrix: integer-2d-array) → integer-array
matrixinteger-2d-array
la grille d’entiers, sous forme d’une liste de lignes de même longueur
Renvoieinteger-array
chaque valeur de la matrice dans l’ordre spiralé dans le sens horaire, en commençant par le coin supérieur gauche

Contraintes

  • 1 ≤ m, n ≤ 80, où m = matrix.length et n = matrix[i].length
  • Chaque ligne a la même longueur n.
  • -100 ≤ matrix[i][j] ≤ 100

Exemples

Entrée
matrix = [[1, 2, 3], [10, 11, 4], [9, 12, 5], [8, 7, 6]]
Sortie
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
Explication
Les valeurs augmentent le long de la spirale. L’anneau extérieur se lit ainsi : 1, 2, 3 en haut, 4, 5, 6 en descendant à droite, 7, 8 en revenant le long du bas et 9, 10 en remontant à gauche. La couche intérieure est une seule colonne, qui se lit une fois de haut en bas : 11, 12.

lock icon+15 tests cachés à la soumission

challenge icon

Pour aller plus loin

Peux-tu plutôt renvoyer les valeurs dans le sens antihoraire, en commençant par le coin supérieur gauche et en descendant d’abord la colonne de gauche ?

Réinitialiser le code
def spiralOrder(matrix):
    # Écrivez le code ici
Cas de test

Cas 1

Cas 2

Cas 3

Entrée

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

Attendu

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