AlgoMaster Logo

Target Sum

nums=[1, 1, 1, 1, 1],target=3
1public int findTargetSumWays(int[] nums, int target) {
2    int total = 0;
3    for (int num : nums) {
4        total += num;
5    }
6    int diff = target + total;
7
8    if (diff < 0 || diff % 2 != 0) {
9        return 0;
10    }
11
12    int subsetSum = diff / 2;
13    int[] dp = new int[subsetSum + 1];
14    dp[0] = 1;
15
16    for (int num : nums) {
17        for (int j = subsetSum; j >= num; j--) {
18            dp[j] += dp[j - num];
19        }
20    }
21
22    return dp[subsetSum];
23}
0 / 55
11111NumsDP Array (# of Ways)