Menu
CoddyTech

Combination Sum

SedangBacktrackingpython iconjava iconcpp iconc iconjs icon+10

Kamu mendapatkan list candidates berisi bilangan bulat positif yang berbeda dan bilangan bulat positif target. Temukan semua kombinasi candidates yang jumlahnya tepat target, dengan menggunakan setiap kandidat sebanyak yang kamu inginkan. [2, 3, 3] dan [3, 2, 3] adalah kombinasi yang sama.

Kembalikan setiap kombinasi dalam urutan menaik, dan urutkan kombinasinya secara leksikografis: pada posisi pertama saat dua kombinasi berbeda, kombinasi dengan nilai yang lebih kecil berada lebih dahulu.

Fungsi

combinationSum(candidates: integer-array, target: integer) → integer-2d-array
candidatesinteger-array
nilai yang berbeda yang boleh kamu gunakan, dalam urutan apa pun, sebanyak yang kamu mau
targetinteger
total setiap kombinasi harus mencapai tepat
Mengembalikaninteger-2d-array
setiap kombinasi yang jumlahnya sama dengan target, masing-masing dalam urutan menaik, dicantumkan dalam urutan leksikografis

Batasan

  • 1 ≤ candidates.length ≤ 50
  • 2 ≤ candidates[i] ≤ 500
  • 2 ≤ target ≤ 500
  • Semua nilai dalam candidates berbeda, tanpa urutan tertentu.
  • Setidaknya satu kombinasi mencapai target, dan paling banyak 150 kombinasi mencapainya.

Contoh

Input
candidates = [6, 2, 3]target = 8
Output
[[2, 2, 2, 2], [2, 3, 3], [2, 6]]
Penjelasan
Empat angka 2, 2 + 3 + 3 dan 2 + 6 semuanya menghasilkan 8, diurutkan berdasarkan nilai keduanya. Tanpa angka 2, hanya tersisa angka 3 dan 6, dan jumlahnya merupakan kelipatan 3, sedangkan 8 bukan.
challenge icon

Pertanyaan lanjutan

Setiap kandidat kini dapat digunakan paling banyak satu kali, dan candidates dapat berisi nilai yang berulang. Bagaimana kamu mengubah pencarian agar tidak ada kombinasi yang muncul dua kali?

Reset kode
def combinationSum(candidates, target):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

candidates = [6, 2, 3]
target = 8

Output yang diharapkan

[[2, 2, 2, 2], [2, 3, 3], [2, 6]]