Menu
CoddyTech

Combination Sum

On te donne une liste candidates de différents entiers positifs et un entier positif target. Trouve toutes les combinaisons de candidats dont la somme est exactement égale à target, en utilisant chaque candidat autant de fois que tu le souhaites. [2, 3, 3] et [3, 2, 3] représentent la même combinaison.

Retourne chaque combinaison dans l’ordre croissant, et les combinaisons dans l’ordre lexicographique : à la première position où deux combinaisons diffèrent, celle qui contient la plus petite valeur vient en premier.

Fonction

combinationSum(candidates: integer-array, target: integer) → integer-2d-array
candidatesinteger-array
les différentes valeurs que vous pouvez utiliser, dans n’importe quel ordre et autant de fois que vous le souhaitez
targetinteger
le total que chaque combinaison doit atteindre exactement
Renvoieinteger-2d-array
chaque combinaison dont la somme est égale à la cible, chacune en ordre croissant, listées dans l’ordre lexicographique

Contraintes

  • 1 ≤ candidates.length ≤ 50
  • 2 ≤ candidates[i] ≤ 500
  • 2 ≤ target ≤ 500
  • Toutes les valeurs de candidates sont différentes, sans ordre particulier.
  • Au moins une combinaison atteint target, et au plus 150 y parviennent.

Exemples

Entrée
candidates = [6, 2, 3]target = 8
Sortie
[[2, 2, 2, 2], [2, 3, 3], [2, 6]]
Explication
Quatre 2, 2 + 3 + 3 et 2 + 6 font tous 8, classés selon leur deuxième valeur. Sans 2, il ne reste que des 3 et des 6, et leurs sommes sont des multiples de 3, ce que 8 n’est pas.
challenge icon

Pour aller plus loin

Chaque candidat peut désormais être utilisé au plus une fois, et candidates peut contenir des valeurs répétées. Comment modifier la recherche afin qu’aucune combinaison n’apparaisse deux fois ?

Réinitialiser le code
def combinationSum(candidates, target):
    # Écrivez le code ici

Test #1

Test #2

Test #3

Arguments

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

Résultat attendu

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