在 JavaScript 中找到具有相等和的 n 个子数组
我们需要编写一个 JavaScript 函数,它的第一个参数接受一个整型数组,第二个参数接受一个整数。
该函数应检查是否能从原始数组中创建 n(第二个参数)个子数组,使得所有子数组的和相等。
例如 −
如果输入是 −
const arr = [4, 3, 2, 3, 5, 2, 1]; const num = 4;
输出应为 true,因为子数组是:[5]、[1, 4]、[2, 3]、[2, 3],它们的和均为 5。
示例
以下是代码 −
const arr = [4, 3, 2, 3, 5, 2, 1];
const num = 4;
const canFormSubarray = (arr = [], num) => {
const total = arr.reduce((sum, num) => sum + num, 0);
if (total % num !== 0) {
return false;
}
const target = total / num;
const visited = new Array(arr.length).fill(false);
const canPartition = (start, numberOfSubsets, currentSum) => {
if (numberOfSubsets === 1) {
return true;
}
if (currentSum === target) {
return canPartition(0, numberOfSubsets - 1, 0);
};
for (let i = start; i < arr.length; i++) {
if (!visited[i]) {
visited[i] = true;
if (canPartition(i + 1, numberOfSubsets, currentSum + arr[i])) {
return true;
}
visited[i] = false;
};
};
return false;
};
return canPartition(0, num, 0);
};
console.log(canFormSubarray(arr, num));输出
以下是控制台输出 −
true
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
JavaScript
PHP