Menu
CoddyTech

Permutations

SedangBacktrackingpython iconjava iconcpp iconc iconjs icon+10

Kamu mendapatkan sebuah list nums yang berisi bilangan bulat berbeda. Kembalikan setiap urutan nilai tersebut, masing-masing sebagai list yang menggunakan setiap nilai tepat satu kali, sehingga n nilai menghasilkan n! urutan. Urutkan dalam urutan leksikografis: bandingkan dua urutan posisi demi posisi, dan biarkan perbedaan pertama menentukan urutannya. Untuk [1, 2, 3], urutan [1, 2, 3] berada di posisi pertama dan [3, 2, 1] berada di posisi terakhir.

Fungsi

permute(nums: integer-array) → integer-2d-array
numsinteger-array
nilai-nilai, semuanya berbeda, dalam urutan apa pun
Mengembalikaninteger-2d-array
setiap susunan nilai, dicantumkan dalam urutan leksikografis

Batasan

  • 1 ≤ nums.length ≤ 6
  • -10 ≤ nums[i] ≤ 10
  • Semua nilai dalam nums berbeda.
  • nums dapat muncul dalam urutan apa pun.

Contoh

Input
nums = [3, 1, 2]
Output
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
Penjelasan
Urutan yang dimulai dengan 1 muncul lebih dahulu, dan [1, 2, 3] muncul sebelum [1, 3, 2] karena 2 lebih kecil daripada 3 pada posisi kedua. Urutan input tidak berpengaruh.
challenge icon

Pertanyaan lanjutan

Diberikan satu urutan, dapatkah kamu menghasilkan urutan berikutnya dalam urutan leksikografis di tempat, dalam waktu O(n) dan ruang ekstra O(1)?

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

Tes #1

Tes #2

Tes #3

Argumen

nums = [3, 1, 2]

Output yang diharapkan

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