将元素添加到数组以使其总和在 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