在 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言
C++
C#
MongoDB
MySQL
Javascript
PHP