交换和
给定两个整数数组,请交换一对数值(每个数组中取一个数值),使得两个数组所有元素的和相等。
返回一个数组,第一个元素是第一个数组中要交换的元素,第二个元素是第二个数组中要交换的元素。若有多个答案,返回任意一个均可。若无满足条件的数值,返回空数组。
输入: array1 = [4, 1, 2, 1, 1, 2], array2 = [3, 6, 3, 3]
输出: [1, 3]
输入: array1 = [1, 2, 3], array2 = [4, 5, 6]
输出: []
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| var findSwapValues = function(array1, array2) { let sum1 = array1.reduce((sum, item) => sum + item); let sum2 = array2.reduce((sum, item) => sum + item); array1 = [...new Set(array1)]; array2 = [...new Set(array2)]; for (let i = 0; i < array1.length; i++) { sum1 -= array1[i]; sum2 += array1[i]; for (let j = 0; j < array2.length; j++) { if (sum1 + array2[j] === sum2 - array2[j]) { return [array1[i], array2[j]]; } } sum1 += array1[i]; sum2 -= array1[i]; } return []; };
|