使JavaScript中的数组中的奇数偶数索引元素之和相等的总可能方法

我们需要编写一个JavaScript函数,该函数将数字数组作为第一个也是唯一的参数。

然后,函数应尝试从数组中删除一个这样的元素,将其删除后,奇数索引处的元素之和等于偶数索引处的元素之和。顺便说一句,该功能应该计算所有可能的唯一方式,我们可以一次删除一个元素以实现所需的组合。

例如-

如果输入数组是-

const arr = [2, 6, 4, 2];

那么输出应该是2,因为在索引1和3处分别有两个元素6和2构成了组合表。

当我们从数组中删除6时-

[2, 4, 2] so the sum at odd indices = sum at even indices = 4

当我们从数组中删除2时-

[2, 6, 4] so the sum at odd indices = sum at even indices = 6

示例

以下是代码-

const arr = [2, 6, 4, 2];
const possibleWays = (arr = []) => {
   const sum = new Array(arr.length);
   let res = 0;
   let oddSum = 0;
   let evenSum = 0;
   for (let i = 0; i < arr.length; ++i) {
      if (i % 2 === 0) sum[i] = (evenSum += arr[i]);
      else sum[i] = (oddSum += arr[i]);
   }
   for (let i = 0; i < arr.length; ++i) {
      if (i % 2 === 0) {
         if (2 * sum[i] - arr[i] + oddSum === 2 * (sum[i - 1] || 0) + evenSum) ++res;
      } else if (2 * sum[i] - arr[i] + evenSum === 2 * (sum[i - 1] || 0) + oddSum) {
         ++res;
      }
   }
   return res;
};
console.log(possibleWays(arr));
输出结果

以下是控制台输出-

2