Menu
CoddyTech

Next Permutation

Sana bir tam sayılar dizisi nums veriliyor ve değerler tekrar edebilir. Bu değerlerin birbirinden farklı her dizilişini sözlük sırasına göre sıralanmış olarak düşün: İki dizilişi farklı oldukları ilk indiste karşılaştır; o indiste daha küçük değere sahip olan önce gelir. Bu sıralamada nums dizisinden hemen sonra gelen dizilişi döndür.

nums zaten en büyük dizilişse, ondan sonra gelen yoktur: değerlerin artan sırada sıralandığı en küçük dizilişi döndür. O(n) zaman ve O(1) ek bellek hedefle.

Fonksiyon

nextPermutation(nums: integer-array) → integer-array
numsinteger-array
değerlerin mevcut düzeni
Döndürürinteger-array
sözlük sırasına göre bir sonraki düzenleme veya nums en büyük değerse artan sırada sıralanmış değerler

Kısıtlar

  • 1 ≤ nums.length ≤ 5000
  • 0 ≤ nums[i] ≤ 1000

Örnekler

Girdi
nums = [2, 5, 4, 1]
Çıktı
[4, 1, 2, 5]
Açıklama
5, 4, 1 kuyruğu azalan sırada, bu yüzden önündeki 2 büyümeli. 2'den büyük en küçük kuyruk değeri 4'tür; onu oraya koy ve geri kalanını artan sırada yaz: [4, 1, 2, 5].
challenge icon

Ek soru

Bunun yerine, sözlük sıralamasında nums'tan hemen önce gelen permütasyonu nasıl bulurdunuz?

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

Test #1

Test #2

Test #3

Argüman

nums = [2, 5, 4, 1]

Beklenen Çıktı

[4, 1, 2, 5]