Menu
CoddyTech

Spiral Matrix

Kamu mendapatkan matriks bilangan bulat dengan m baris dan n kolom, yang diberikan sebagai list baris. Kembalikan semua nilainya dalam urutan spiral.

Mulai dari sudut kiri atas dan bergerak ke kanan sepanjang baris teratas, lalu ke bawah sepanjang kolom paling kanan, ke kiri sepanjang baris terbawah, dan ke atas sepanjang kolom paling kiri. Terus bergerak melingkar ke dalam searah jarum jam sampai setiap nilai dibaca tepat satu kali.

Fungsi

spiralOrder(matrix: integer-2d-array) → integer-array
matrixinteger-2d-array
grid berisi bilangan bulat, berupa list baris yang panjangnya sama
Mengembalikaninteger-array
setiap nilai matriks dalam urutan spiral searah jarum jam, dimulai dari sudut kiri atas

Batasan

  • 1 ≤ m, n ≤ 80, dengan m = matrix.length dan n = matrix[i].length
  • Setiap baris memiliki panjang yang sama, yaitu n.
  • -100 ≤ matrix[i][j] ≤ 100

Contoh

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]
Penjelasan
Nilainya bertambah mengikuti spiral. Cincin luar terbaca dari 1 hingga 10, dan lapisan dalam berupa satu kolom, dibaca sekali: 11, 12.
challenge icon

Pertanyaan lanjutan

Bisakah kamu mengembalikan nilai dalam urutan berlawanan arah jarum jam, dimulai dari sudut kiri atas lalu menyusuri kolom kiri terlebih dahulu?

Reset kode
def spiralOrder(matrix):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

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