在 JavaScript 中向数组中添加元素使其和变得多样


问题

我们需要编写一个 JavaScript 函数,它以一个数字数组 arr 作为第一个参数,并以一个数字 num 作为第二个参数。

我们应该通过向数组添加元素,使我们的数组能够通过在它之间的 [0, num](包括两者)范围内添加特定数字来获得任何总和。我们的函数最终应该返回向数组中添加的最小数字数量,以便它能够产生介于 0 和 num 之间的任何总和。

例如,如果输入到该函数的是 −

const arr = [1, 5, 10];
const sum = 20;

那么输出应该是 −

const output = 2;

输出说明

因为如果我们向数组添加两个数字(2 和 4),我们就能获得介于 [0, 20] 之间的任何总和

示例

代码如下 −

const arr = [1, 5, 10];
const sum = 20;
const minimumAddition = (arr = [], sum = 1) => {
   let canAdd = 1;
   let count = 0,i = 0;
   while(canAdd <= sum){
      if((i >= arr.length) || (canAdd < arr[i])){
         count++;
         canAdd+=canAdd;
      }else{
         canAdd += arr[i++];
      };
   };
   return count;
};
console.log(minimumAddition(arr, sum));

输出

控制台中的输出将是 −

2

更新于:2021-03-19

69 浏览量

开启你的 职业

完成课程即可获得认证

入门
广告