Menu
CoddyTech

Next Permutation

Kamu menerima sebuah array bilangan bulat nums, dan nilainya mungkin berulang. Bayangkan semua susunan berbeda dari nilai-nilai ini, diurutkan berdasarkan urutan kamus: bandingkan dua susunan pada indeks pertama yang berbeda, lalu susunan dengan nilai yang lebih kecil di sana berada lebih awal. Kembalikan susunan yang berada tepat setelah nums dalam urutan tersebut.

Jika nums sudah merupakan susunan terbesar, tidak ada susunan setelahnya: kembalikan susunan terkecil, yaitu nilai-nilai yang diurutkan secara menaik. Usahakan waktu O(n) dan memori ekstra O(1).

Fungsi

nextPermutation(nums: integer-array) → integer-array
numsinteger-array
susunan nilai saat ini
Mengembalikaninteger-array
susunan berikutnya dalam urutan leksikografis, atau nilai-nilai yang diurutkan dari yang terkecil ke terbesar jika nums adalah yang terbesar

Batasan

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

Contoh

Input
nums = [2, 5, 4, 1]
Output
[4, 1, 2, 5]
Penjelasan
Ekor 5, 4, 1 menurun, jadi 2 di depannya harus bertambah. Nilai ekor terkecil yang lebih besar dari 2 adalah 4. Letakkan di sana dan susun sisanya dalam urutan menaik: [4, 1, 2, 5].
challenge icon

Pertanyaan lanjutan

Bagaimana cara menemukan susunan sebelumnya, yang tepat sebelum nums dalam urutan kamus?

Reset kode
def nextPermutation(nums):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

nums = [2, 5, 4, 1]

Output yang diharapkan

[4, 1, 2, 5]