Menu
CoddyTech

Target Sum

Vous recevez un tableau nums d’entiers non négatifs et un entier target. Placez un signe plus ou moins devant chaque nombre, conservez leur ordre et évaluez l’expression. Renvoyez le nombre de choix de signes qui rendent l’expression égale à target. Chacun des 2^n choix compte séparément, donc +0 et -0 sont deux choix différents.

Fonction

findTargetSumWays(nums: integer-array, target: integer) → integer
numsinteger-array
les nombres, chacun recevant un signe
targetinteger
la valeur à laquelle l’expression doit être égale
Renvoieinteger
le nombre de choix de signes dont l’expression est égale à la cible

Contraintes

  • 1 ≤ nums.length ≤ 20
  • 0 ≤ nums[i] ≤ 1000
  • La somme de nums est inférieure ou égale à 1000.
  • -1000 ≤ target ≤ 1000
  • La réponse est au plus égale à 220, bien en dessous de la limite d’un entier signé sur 32 bits.

Exemples

Entrée
nums = [2, 1, 1]target = 2
Sortie
2
Explication
+2 +1 -1 et +2 -1 +1 valent tous deux 2. Avec un signe moins devant le 2, le maximum que tu peux atteindre est -2 + 1 + 1 = 0, donc aucun autre choix ne fonctionne.
challenge icon

Pour aller plus loin

Peux-tu gérer jusqu’à 40 nombres dont les valeurs peuvent atteindre 10^9, alors qu’aucun tableau indexé par la somme ne tient en mémoire ?

Réinitialiser le code
def findTargetSumWays(nums, target):
    # Écrivez le code ici

Test #1

Test #2

Test #3

Arguments

nums = [2, 1, 1]
target = 2

Résultat attendu

2