在 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