在 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

以上是 在 JavaScript 中用最少的硬币汇总金额 的全部内容, 来源链接: utcz.com/z/352692.html

回到顶部