Menu
CoddyTech

Spiral Matrix

Ti viene data una matrice di interi con m righe e n colonne, fornita come elenco di righe. Restituisci tutti i suoi valori in ordine a spirale.

Inizia dall'angolo in alto a sinistra e procedi verso destra lungo la riga superiore, poi scendi lungo la colonna destra, vai a sinistra lungo la riga inferiore e risali lungo la colonna sinistra. Continua a girare verso l'interno in senso orario finché ogni valore non è stato letto esattamente una volta.

Funzione

spiralOrder(matrix: integer-2d-array) → integer-array
matrixinteger-2d-array
la griglia di numeri interi, come elenco di righe della stessa lunghezza
Restituisceinteger-array
ogni valore della matrice in ordine a spirale in senso orario, iniziando dall'angolo in alto a sinistra

Vincoli

  • 1 ≤ m, n ≤ 80, dove m = matrix.length e n = matrix[i].length
  • Ogni riga ha la stessa lunghezza n.
  • -100 ≤ matrix[i][j] ≤ 100

Esempi

Input
matrix = [[1, 2, 3], [10, 11, 4], [9, 12, 5], [8, 7, 6]]
Output
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
Spiegazione
I valori aumentano lungo la spirale. L’anello esterno mostra 1, 2, 3 lungo il lato superiore, 4, 5, 6 scendendo lungo il lato destro, 7, 8 tornando indietro lungo il lato inferiore e 9, 10 salendo lungo il lato sinistro. Lo strato interno è un’unica colonna, da leggere una sola volta dall’alto verso il basso: 11, 12.

lock icon+15 test nascosti all’invio

challenge icon

Per approfondire

Puoi restituire invece i valori in ordine antiorario, iniziando dall'angolo in alto a sinistra e scendendo prima lungo la colonna di sinistra?

Ripristina il codice
def spiralOrder(matrix):
    # Scrivi il codice qui
Casi di test

Caso 1

Caso 2

Caso 3

Input

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

Atteso

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