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
热门推荐
3 祝福语简短的微信
10 幼儿祝福语大全简短贺卡
11 感谢教官文案祝福语简短
12 鼠年同事祝福语简短创意
13 元旦祝福语 简短独特群发
14 妈咪跟我生日祝福语简短
15 给儿子新婚祝福语简短
16 伴娘祝福语长文案简短
17 恭喜高考完祝福语简短
18 生日祝福语送老公简短