Menu
CoddyTech

Target Sum

Ricevi un array nums di interi non negativi e un intero target. Metti un segno più o meno davanti a ogni numero, mantieni il loro ordine e valuta l'espressione. Restituisci quanti modi di scegliere i segni rendono l'espressione uguale a target. Ognuna delle 2^n scelte conta separatamente, quindi +0 e -0 sono due scelte diverse.

Funzione

findTargetSumWays(nums: integer-array, target: integer) → integer
numsinteger-array
i numeri, ognuno dei quali ha un segno
targetinteger
il valore a cui l’espressione deve essere uguale
Restituisceinteger
il numero di opzioni di segno la cui espressione è uguale al valore target

Vincoli

  • 1 ≤ nums.length ≤ 20
  • 0 ≤ nums[i] ≤ 1000
  • La somma di nums è al massimo 1000.
  • -1000 ≤ target ≤ 1000
  • La risposta è al massimo 220, ben al di sotto del limite di un intero con segno a 32 bit.

Esempi

Input
nums = [2, 1, 1]target = 2
Output
2
Spiegazione
+2 +1 -1 e +2 -1 +1 sono entrambi uguali a 2. Con un meno sul 2, il massimo che puoi ottenere è -2 + 1 + 1 = 0, quindi nessun’altra scelta funziona.
challenge icon

Per approfondire

Riesci a gestire fino a 40 numeri con valori fino a 10^9, quando nessun array indicizzato per somma entra in memoria?

Ripristina il codice
def findTargetSumWays(nums, target):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomenti

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

Output atteso

2