给定一个由 不同 正整数组成的数组 nums ,和一个目标整数 target 。请从 nums 中找出并返回总和为 target 的元素组合的个数。数组中的数字可以在一次排列中出现任意次,但是顺序不同的序列被视作不同的组合。
for (var i = 1; i <= target; i++) {求出目标值为1 ~ target之间的情况,结果返回dp[target]就行for (var j of arr) {指定了目标值target后,然后就开始兑换了,分别由面额为arr[j]兑换的,所以dp[i] += dp[i - j];
var combinationSum4 = function (arr, target) {
var dp = new Array(target + 1).fill(0);
dp[0] = 1;
for (var i = 1; i <= target; i++) {
for (var j of arr) {
if (i >= j) {
dp[i] += dp[i - j];
}
}
}
return dp[target];
};
代码调试
console.log(combinationSum4([2, 4, 5], 15));