Menu
CoddyTech

Combination Sum

Vous disposez d’une liste candidates d’entiers positifs différents et d’un entier positif target. Trouvez toutes les combinaisons de candidats dont les valeurs donnent exactement target, chaque candidat pouvant être utilisé autant de fois que vous le souhaitez. Deux combinaisons sont identiques lorsqu’elles utilisent les mêmes valeurs le même nombre de fois : [2, 3, 3] et [3, 2, 3] ne comptent donc qu’une seule fois.

Renvoyez chaque combinaison avec ses valeurs en ordre croissant, et les combinaisons en ordre lexicographique : comparez deux combinaisons valeur par valeur de gauche à droite ; celle qui a la plus petite valeur à la première différence 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, autant de fois que vous le souhaitez
targetinteger
le total de chaque combinaison doit être exactement égal
Renvoieinteger-2d-array
toutes les combinaisons dont la somme est égale à la cible, chacune en ordre croissant, classées par 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 font 8, tout comme 2 + 3 + 3 et 2 + 6. Les trois commencent par 2, donc la deuxième valeur détermine l’ordre : 2, puis 3, puis 6. Sans 2, il ne reste que des 3 et des 6, et tous leurs mélanges sont des multiples de 3, ce que 8 n’est pas.

lock icon+12 tests cachés à la soumission

challenge icon

Pour aller plus loin

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

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

Cas 1

Cas 2

Cas 3

Entrée

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

Attendu

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