在 JavaScript 中查找 n 个参数的所有可能的组合(加法和减法)总和


我们需要编写一个 JavaScript 函数,该函数包含任意数量的参数(所有参数都为 Number 类型)。

该函数应计算加法和减法的可能总和。

例如 - 如果参数是 1、2、3

那么所有可能的组合为 -

1 + 2 + 3
1 - 2 - 3
1 + 2 - 3
1 - 2 + 3

最后,该函数应得出最接近 0 的总和。在本例中,该答案恰好为 0。

示例

const findSmallestPositive = (...arr) => {
   let set = new Set([Math.abs(arr[0])]);
   for (let i = 1;
   i < arr.length; i++){
      const secondSet = new Set;
      for (let d of Array.from(set)){
         secondSet.add(Math.abs(d + arr[i]))
         secondSet.add(Math.abs(d - arr[i]))
      };
      set = secondSet;
   };
   return Math.min(...Array.from(set))
};
console.log(findSmallestPositive(5,3))
console.log(findSmallestPositive(1,2,3))
console.log(findSmallestPositive(1,2,3,5))

输出

这会产生以下输出 -

2
0
1

更新日期:25-11-2020

290 次浏览

开启职业生涯

通过完成课程获得认证

开始学习
广告