Menu
CoddyTech

Spiral Matrix

Recibes una matriz de enteros con m filas y n columnas, representada como una lista de filas. Devuelve todos sus valores en orden espiral.

Empieza en la esquina superior izquierda y avanza hacia la derecha por la fila superior; después, baja por la columna derecha, avanza hacia la izquierda por la fila inferior y sube por la columna izquierda. Sigue dando vueltas hacia el interior en sentido horario hasta haber leído cada valor exactamente una vez.

Función

spiralOrder(matrix: integer-2d-array) → integer-array
matrixinteger-2d-array
la cuadrícula de enteros, como una lista de filas de igual longitud
Devuelveinteger-array
cada valor de la matriz en orden espiral en el sentido de las agujas del reloj, comenzando en la esquina superior izquierda

Restricciones

  • 1 ≤ m, n ≤ 80, donde m = matrix.length y n = matrix[i].length
  • Cada fila tiene la misma longitud n.
  • -100 ≤ matrix[i][j] ≤ 100

Ejemplos

Entrada
matrix = [[1, 2, 3], [10, 11, 4], [9, 12, 5], [8, 7, 6]]
Salida
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
Explicación
Los valores aumentan a lo largo de la espiral. El anillo exterior se lee como 1, 2, 3 en la parte superior, 4, 5, 6 hacia abajo por la derecha, 7, 8 de vuelta por la parte inferior y 9, 10 hacia arriba por la izquierda. La capa interior es una sola columna, que se lee una vez de arriba abajo: 11, 12.

lock icon+15 pruebas ocultas al enviar

challenge icon

Para ir más allá

¿Puedes devolver los valores en sentido antihorario, empezando por la esquina superior izquierda y bajando primero por la columna izquierda?

Restablecer código
def spiralOrder(matrix):
    # Escribe el código aquí
Casos de prueba

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

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