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

Permutations

Sizga o'zaro farq qiladigan butun sonlardan iborat nums massivi berilgan. Uning barcha mumkin bo'lgan o'rin almashtirishlarini (permutations) qaytaring. Javobni istalgan tartibda qaytarishingiz mumkin.

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

Misollar

kod
Input: nums = [1,2,3]
Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
kod
Input: nums = [0,1]
Output: [[0, 1], [1, 0]]
kod
Input: nums = [1]
Output: [[1]]

Maslahatlar

  1. Har bir pozitsiyaga qaysi son qo'yilishini tanlab, ishlatilgan sonlarni belgilab boradigan rekursiv qidiruv (backtracking) haqida o'ylab ko'ring.
  2. Joriy tanlangan sonlar ketma-ketligi va qaysi indekslar allaqachon ishlatilganini bildiruvchi bayroq (used) massivini yuriting: har chaqiriqda ishlatilmagan har bir sonni tanlab, uni belgilab rekursiyaga kiring, so'ng orqaga qaytishda belgini olib tashlang; ketma-ketlik uzunligi nums bilan tenglashganda uni natijaga saqlang.