106 / 205
LeetCode · MediumO'rta20 ball· ~25 daqiqa

Combinations

Sizga ikkita butun son n va k berilgan.

[1, n] oraliqdagi sonlardan tuzish mumkin bo'lgan barcha k o'lchamli kombinatsiyalarni qaytaring.

Javobni istalgan tartibda qaytarishingiz mumkin (ham kombinatsiyalar tartibi, ham kombinatsiya ichidagi sonlar tartibi muhim emas).

example.go
func solve(n int, k int) [][]int {
    // ...
}

Misollar

kod
Input: n = 4, k = 2
Output: [[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]]
kod
Input: n = 1, k = 1
Output: [[1]]

Maslahatlar

  1. Har bir sonni "olish yoki olmaslik" tanlovi orqali barcha variantlarni yig'ib chiqadigan rekursiv qidiruv (backtracking) haqida o'ylab ko'ring.
  2. Joriy tanlangan sonlar to'plamini saqlab boruvchi yordamchi massiv bilan rekursiv funksiya yozing: har chaqiriqda start dan n gacha bo'lgan sonlarni birma-bir qo'shib, chuqurroq rekursiyaga kiring, keyin orqaga qaytishda (backtrack) oxirgi qo'shilgan sonni olib tashlang; to'plam uzunligi k ga yetganda natijaga saqlang.