在 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 瀏覽量

開啟你的 職業

完成課程即可獲得認證

入門
廣告
© . All rights reserved.