在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

更新于:2021年1月18日

225次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.