leetcode

我的 leetcode 题解(JavaScript)


/**
 * @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