1def find_target_sum_ways(nums, target):
2 offset = sum(nums)
3 width = 2 * offset + 1
4 dp = [0] * width
5 dp[offset] = 1
6 for num in nums:
7 nxt = [0] * width
8 for current in range(width):
9 if dp[current]:
10 nxt[current + num] += dp[current]
11 nxt[current - num] += dp[current]
12 dp = nxt
13 return dp[offset + target] if 0 <= offset + target < width else 0