145 / 205
LeetCode · MediumO'rta20 ball· ~30 daqiqa

Spiral Matrix

Sizga m x n o'lchamdagi ikki o'lchamli matrix berilgan. Uning barcha elementlarini spiral tartibda (tashqaridan ichkariga qarab soat mili yo'nalishida) qaytaring.

Matritsa to'rtburchak bo'lishi mumkin (m ≠ n). Yuqori chap burchakdan boshlab: o'ngga → pastga → chapga → tepaga, va shu tartibda ichkariga.

example.go
func solve(matrix [][]int) []int {
    // ...
}

Misollar

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

Maslahatlar

  1. Matritsaning tashqi chegaralarini (top, bottom, left, right) kuzatib, har safar bir tomonni to'liq aylanib chiqqach chegarani ichkariga siljitib borishni o'ylab ko'ring.
  2. top<=bottom va left<=right bo'lguncha davom eting: avval yuqori qatorni chapdan o'ngga o'qib top++ qiling, keyin o'ng ustunni yuqoridan pastga o'qib right-- qiling, so'ng (agar hali qator qolgan bo'lsa) pastki qatorni o'ngdan chapga o'qib bottom-- qiling, va (agar hali ustun qolgan bo'lsa) chap ustunni pastdan yuqoriga o'qib left++ qiling.