Menu
CoddyTech

Spiral Matrix

Você recebe uma matriz de números inteiros com m linhas e n colunas, fornecida como uma lista de linhas. Retorne todos os seus valores em ordem espiral.

Comece no canto superior esquerdo e siga para a direita ao longo da linha superior, depois desça pela coluna da direita, siga para a esquerda ao longo da linha inferior e suba pela coluna da esquerda. Continue circulando para dentro no sentido horário até que cada valor tenha sido lido exatamente uma vez.

Função

spiralOrder(matrix: integer-2d-array) → integer-array
matrixinteger-2d-array
a grade de números inteiros, como uma lista de linhas de mesmo comprimento
Retornainteger-array
cada valor da matriz em ordem espiral no sentido horário, começando no canto superior esquerdo

Restrições

  • 1 ≤ m, n ≤ 80, em que m = matrix.length e n = matrix[i].length
  • Cada linha tem o mesmo comprimento n.
  • -100 ≤ matrix[i][j] ≤ 100

Exemplos

Entrada
matrix = [[1, 2, 3], [10, 11, 4], [9, 12, 5], [8, 7, 6]]
Saída
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
Explicação
Os valores aumentam ao longo da espiral. O anel externo mostra 1, 2, 3 na parte de cima, 4, 5, 6 descendo pelo lado direito, 7, 8 de volta pela parte de baixo e 9, 10 subindo pelo lado esquerdo. A camada interna é uma única coluna, lida uma vez de cima para baixo: 11, 12.

lock icon+15 testes ocultos ao enviar

challenge icon

Para ir além

Você pode retornar os valores em ordem anti-horária, começando no canto superior esquerdo e descendo primeiro pela coluna da esquerda?

Redefinir código
def spiralOrder(matrix):
    # Escreva o código aqui
Casos de teste

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]