Menu
CoddyTech

Subsets

Kamu mendapatkan sebuah list nums berisi bilangan bulat yang berbeda. Kembalikan setiap subset dari list tersebut, termasuk subset kosong dan list lengkapnya, sehingga n nilai menghasilkan 2^n subset. Tulis setiap subset dengan nilai-nilainya dalam urutan menaik, dan urutkan subset secara leksikografis: bandingkan dua subset nilai demi nilai, perbedaan pertama menentukan urutannya, dan subset yang merupakan awal dari subset lain muncul lebih dulu. Untuk [1, 2], jawabannya adalah [[], [1], [1, 2], [2]].

Fungsi

subsets(nums: integer-array) → integer-2d-array
numsinteger-array
nilai-nilainya, semuanya berbeda, dalam urutan apa pun
Mengembalikaninteger-2d-array
setiap subset, masing-masing diurutkan menaik, dicantumkan dalam urutan leksikografis

Batasan

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

Contoh

Input
nums = [3, 1, 2]
Output
[[], [1], [1, 2], [1, 2, 3], [1, 3], [2], [2, 3], [3]]
Penjelasan
Tiga nilai menghasilkan 2^3 = 8 subset. [1, 2] muncul sebelum [1, 2, 3] karena merupakan awalnya, dan [1, 2, 3] muncul sebelum [1, 3] karena 2 lebih kecil daripada 3 pada posisi kedua.
challenge icon

Pertanyaan lanjutan

Bisakah kamu menghasilkan list yang sama tanpa rekursi, dengan membangun setiap subset langsung dari subset sebelumnya?

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

Tes #1

Tes #2

Tes #3

Argumen

nums = [3, 1, 2]

Output yang diharapkan

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