在 JavaScript 中平衡两个数组
问题
我们需要编写一个JavaScript函数,它接受两个数字数组arr1和arr2作为第一个和第二个参数。
arr1和arr2中元素的总和不同。我们的函数应该从第一个数组中选取一个元素并将其推送到第二个数组中,然后从第二个数组中选取一个元素并将其推送到第一个数组中,使得两个数组的元素之和变得相等。我们应该返回这两个元素的数组。
例如,如果函数的输入是
输入
const arr1 = [1, 2, 5]; const arr2 = [2, 4];
输出
const output = [5, 4];
输出说明
因为如果我们从arr1中删除5并将其推送到arr2并从arr2中删除4并将其推送到arr1那么两个数组的总和将相等(7)。
以下是代码:
示例
const arr1 = [1, 2, 5];
const arr2 = [2, 4];
const balanceArrays = (arr1 = [], arr2 = []) => {
const sumA = arr1.reduce((acc, v) => acc + v, 0)
const sumB = arr2.reduce((acc, v) => acc + v, 0)
const difference = (sumA + sumB) / 2 - sumA
const map = arr2.reduce((acc, v) => {
acc[v] = true
return acc
}, {})
for(let i = 0; i < arr1.length; i++) {
if(map[arr1[i] + difference] === true) {
return [arr1[i], arr1[i] + difference]
}
}
return []
};
console.log(balanceArrays(arr1, arr2));输出结果[5, 4]
热门推荐
6 保研的祝福语简短
10 年轻20岁祝福语简短
11 朋友结婚祝福语信息简短
12 女孩婚礼贺卡祝福语简短
13 30段点歌简短祝福语
14 虎年春节祝福语图文简短
15 写给后妈祝福语大全简短
16 简短回复生日祝福语
17 校长送毕业祝福语简短
18 毕业立体贺卡祝福语简短