在 JavaScript 中把陣列中所有可能的組合加起來然後等於目標值


問題

我們需要編寫一個 JavaScript 函式,該函式將一個唯一整數陣列(arr)作為第一個引數,將目標總和作為第二個引數。

我們的函式應該統計可以加起來等於目標總和的所有成對組合(允許重複)並返回該計數。

例如,如果函式的輸入為 −

const arr = [1, 2, 3];
const target = 4;

那麼輸出應為 −

const output = 7;

輸出解釋

因為,可能的組合方式有 −

(1, 1, 1, 1)
(1, 1, 2)
(1, 2, 1)
(1, 3)
(2, 1, 1)
(2, 2)
(3, 1)

示例

此程式碼為 −

 即時演示

const arr = [1, 2, 3];
const target = 4;
const sumUpto = (nums = [], target = 1, map = {}) => {
   if (target === 0){
      return 1;
   };
   if (typeof map[target] != "undefined"){
      return map[target];
   };
   let res = 0;
   for (let i = 0; i<nums.length; i++) {
      if (target >= nums[i]){
         res += sumUpto(nums, target - nums[i], map);
      };
   };
   map[target] = res;
   return res;
};
console.log(sumUpto(arr, target));

輸出

控制檯中的輸出為 −

7

更新時間: 18-Mar-2021

298 次瀏覽

開啟你的 職業 生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.