在JavaScript中将数字数组拆分为两个具有相同平均值的数组

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

函数需要确定输入数组的元素是否存在组合,当将它们分为两组时(可能/可能不具有相等的元素),两组的平均值都相同。如果存在任何此类情况,则该函数应返回true,否则返回false。

例如-

如果输入数组是-

const arr = [6, 3, 2, 8, 1, 5, 7, 4];

那么输出应该是-

const output = true;

因为组合是[8、1、5、4]和[6、3、2、7],因为这两个组的平均值均为4.5

示例

以下是代码-

const arr = [6, 3, 2, 8, 1, 5, 7, 4];

const canHaveEqualAveragePartition = (arr = []) => {

   const sum = arr.reduce((acc, val) => acc + val);

   const array = Array(sum+1).fill(false).map(() =>

   Array(arr.length+1).fill(false));

   array[0][0] = true;

   for(let i=0; i < arr.length; ++i){

      for(let j=sum - arr[i];j>=0;--j){

         for(let k=arr.length-2;k>=0;--k){

            if(array[j][k]){

               array[j + arr[i]][k+1] = true;

               if((j + arr[i]) * (arr.length - k - 1) == (sum - j -arr[i]) * (k + 1)){

                  return true;

               }

            }

         }

      }

   }

   return false;

};

console.log(canHaveEqualAveragePartition(arr));

输出结果

以下是控制台输出-

true

以上是 在JavaScript中将数字数组拆分为两个具有相同平均值的数组 的全部内容, 来源链接: utcz.com/z/340644.html

回到顶部