Target Sum - Problem
You are given an integer array nums and an integer target. You want to build an expression out of nums by adding one of the symbols '+' and '-' before each integer in nums and then concatenate all the integers.
For example, if nums = [2, 1], you can add a '+' before 2 and a '-' before 1 and concatenate them to build the expression "+2-1".
Return the number of different expressions that you can build, which evaluates to target.
Input & Output
Example 1 — Basic Case
$
Input:
nums = [1,1,1,1,1], target = 3
›
Output:
5
💡 Note:
There are 5 ways to assign symbols: -1 + 1 + 1 + 1 + 1 = 3, +1 - 1 + 1 + 1 + 1 = 3, +1 + 1 - 1 + 1 + 1 = 3, +1 + 1 + 1 - 1 + 1 = 3, +1 + 1 + 1 + 1 - 1 = 3
Example 2 — Simple Case
$
Input:
nums = [1], target = 1
›
Output:
1
💡 Note:
Only one way: +1 = 1
Example 3 — Impossible Case
$
Input:
nums = [1,2], target = 4
›
Output:
0
💡 Note:
Impossible to reach 4 with numbers [1,2]. Maximum possible is +1+2=3, minimum is -1-2=-3
Constraints
- 1 ≤ nums.length ≤ 20
- 0 ≤ nums[i] ≤ 1000
- 0 ≤ sum(nums[i]) ≤ 1000
- -1000 ≤ target ≤ 1000
Visualization
Tap to expand
Understanding the Visualization
1
Input
Array of numbers and target sum
2
Process
Try all combinations of + and - signs
3
Output
Count expressions that equal target
Key Takeaway
🎯 Key Insight: Transform +/- assignment into subset sum problem using math: sum(P) = (total + target)/2
💡
Explanation
AI Ready
💡 Suggestion
Tab
to accept
Esc
to dismiss
// Output will appear here after running code