Menu
CoddyTech

Permutations

Farklı tam sayılardan oluşan bir nums listesi alırsın. Bu değerlerin tüm sıralamalarını döndür; her biri her değeri tam olarak bir kez kullanan bir liste olsun, böylece n değer n! sıralama verir. Bunları sözlük sırasına göre listele: iki sıralamayı konum konum karşılaştır ve ilk farklı konum belirleyici olsun. [1, 2, 3] için bu, [1, 2, 3] listesini ilk, [3, 2, 1] listesini son sıraya koyar.

Fonksiyon

permute(nums: integer-array) → integer-2d-array
numsinteger-array
değerler, hepsi farklı, herhangi bir sırada
Döndürürinteger-2d-array
değerlerin sözlük sırasına göre listelenmiş her sıralaması

Kısıtlar

  • 1 ≤ nums.length ≤ 6
  • -10 ≤ nums[i] ≤ 10
  • Tüm nums değerleri birbirinden farklıdır.
  • nums herhangi bir sırada olabilir.

Örnekler

Girdi
nums = [3, 1, 2]
Çıktı
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
Açıklama
Üç değerin 3! = 6 sıralaması vardır. Sıralandığında değerler 1, 2, 3 olur; bu nedenle 1 ile başlayan sıralamalar önce gelir ve ikinci konumda 2, 3'ten küçük olduğu için [1, 2, 3], [1, 3, 2]'den önce gelir. Girdinin sırası önemli değildir.
challenge icon

Ek soru

Bir sıralama verildiğinde, O(n) zamanda ve O(1) ek alan kullanarak sözlük sırasındaki bir sonraki sıralamayı yerinde üretebilir misin?

Kodu sıfırla
def permute(nums):
    # Kodu buraya yazın

Test #1

Test #2

Test #3

Argüman

nums = [3, 1, 2]

Beklenen Çıktı

[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]