diff --git a/494. Target Sum b/494. Target Sum new file mode 100644 index 0000000..62d6eca --- /dev/null +++ b/494. Target Sum @@ -0,0 +1,26 @@ +class Solution { +public: + int findTargetSumWays(vector& nums, int target) { + int sum = 0; + for (int num : nums) { + sum += num; + } + + if ((target + sum) % 2 != 0 || target + sum < 0) { + return 0; + } + + int subsetSum = (target + sum) / 2; + + vector dp(subsetSum + 1, 0); + dp[0] = 1; // 1 way to make sum 0 + + for (int num : nums) { + for (int i = subsetSum; i >= num; --i) { + dp[i] += dp[i - num]; + } + } + + return dp[subsetSum]; + } +};