/**
* @param {number[]} nums
* @param {number} S
* @return {number}
*/
const findTargetSumWays = function (nums, S) {
const numslen = nums.length;
let sum = 0;
for (let i = 0; i < numslen; ++i) {
sum += nums[i];
}
if (sum < S) {
return 0;
}
sum = sum + S;
if (sum % 2 === 1) {
return 0;
} else {
sum /= 2;
}
let dp = new Array(sum + 1);
dp.fill(0);
dp[0] = 1;
for (let i = 0; i < numslen; ++i) {
for (let j = sum; j >= nums[i]; --j) {
dp[j] += dp[j - nums[i]]
}
}
return dp[sum];
};
还有一个博主总结的其他的各种方法:http://www.cnblogs.com/grandyang/p/6395843.html