JavaScript 中和值子数组对
我们需要编写一个 JavaScript 函数,该函数以整数数组作为唯一参数。
该函数应当确定是否存在一种方法,将数组分成两个子数组,使得两个子数组中元素之和相等。在将元素划分为子数组时,我们必须确保原始数组中的所有元素都没有遗漏。
例如:
如果输入数组为:
const arr = [5, 3, 7, 4, 1, 8, 2, 6];
那么输出应当为:
const output = true;
因为所需的子数组为:[5, 3, 4, 6] 和 [7, 1, 8, 2],它们的和都为 18。
示例
以下是代码:
const arr = [5, 3, 7, 4, 1, 8, 2, 6];
const canPartition = (arr = []) => {
const sum = arr.reduce((acc, val) => acc + val);
if (sum % 2 !== 0){
return false;
};
const target = sum / 2;
const array = new Array(target + 1).fill(false);
array[0] = true;
for (const num of arr) {
if (array[target - num]){
return true
};
for (let i = target; i >= num; i--) {
array[i] = array[i - num];
}
}
return false;
};
console.log(canPartition(arr));输出
以下是控制台输出:
true
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP