用 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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP