在 JavaScript 中用最少的硬币汇总金额
问题
我们需要编写一个JavaScript函数,它接受arr,arr作为第一个参数。这个数组基本上指定了我们拥有的不同类型的硬币面额。
该函数的第二个参数是一个数字,amount,它指定了我们想要加起来的数量。我们的函数应该简单地返回加起来所需的最小硬币数量。
如果我们无论如何都不能达到金额,我们应该返回-1。
例如,如果函数的输入是-
const arr = [1, 2, 5]; const amount = 17;
那么输出应该是-
const output = 4;
输出说明:
因为使用3个5的硬币和12的硬币可以达到金额。
示例
此代码将是-
const arr = [1, 2, 5]; const amount = 17; const minCoins = (arr = [], amount = 1) => { const changes = []; changes[0] = 0; while(changes.length <= amount){ let change = Math.pow(2, 31) - 1; for (let i = 0; i < arr.length; i++) { if (changes.length - arr[i] < 0){ continue; }; change = Math.min(change, 1 + changes[changes.length - arr[i]]); }; changes.push(change); }; return changes[amount] == Math.pow(2, 31) - 1 ? -1 : changes[amount]; }; console.log(minCoins(arr, amount));输出结果
控制台中的输出将是-
4