在 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 次浏览

开启你的 职业 生涯

完成课程获得认证

开始
广告