Open Tcdian opened 4 years ago
/**
* @param {number} amount
* @param {number[]} coins
* @return {number}
*/
var change = function(amount, coins) {
if (coins.length === 0) {
return amount === 0 ? 1 : 0;
}
const dp = Array.from(new Array(coins.length), () => new Array(amount + 1));
for (let i = 0; i < coins.length; i++) {
for (let j = 0; j <= amount; j++) {
if (j === 0) {
dp[i][j] = 1;
} else if (i === 0) {
dp[i][j] = j >= coins[i] ? dp[i][j - coins[i]] : 0;
} else {
dp[i][j] = j >= coins[i] ? dp[i - 1][j] + dp[i][j - coins[i]] : dp[i - 1][j]
}
}
}
return dp[coins.length - 1][amount];
};
function change(amount: number, coins: number[]): number {
if (coins.length === 0) {
return amount === 0 ? 1 : 0;
}
const dp: number[][] = Array.from(new Array(coins.length), () => new Array(amount + 1));
for (let i = 0; i < coins.length; i++) {
for (let j = 0; j <= amount; j++) {
if (j === 0) {
dp[i][j] = 1;
} else if (i === 0) {
dp[i][j] = j >= coins[i] ? dp[i][j - coins[i]] : 0;
} else {
dp[i][j] = j >= coins[i] ? dp[i - 1][j] + dp[i][j - coins[i]] : dp[i - 1][j]
}
}
}
return dp[coins.length - 1][amount];
}
518. Coin Change 2
给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。
Example 1
Example 2
Example 3
Note
0 <= amount <= 5000
1 <= coin <= 5000