JavaScript 中可能出现的最大乘积和
假设我们有两个数组,即 arr1 和 arr2,数组中的值为正数。两个数组中各个元素的数量相同。
我们需要编写一个函数,找出其元素乘积的最大和。
arr1 中的每个元素必须与 arr2 中的一个元素相乘,反之亦然,使得两个数组中的每个元素只出现一次,且生成乘积的和最大。
例如:如果,
arr1 = [5,1,3,4,2] and, arr2 = [8,10,9,7,6]
乘积的可能和为 −
5*6 + 1*7 + 3*9 + 4*10 + 2*8
但是,它可能不是最大的和。
示例
以下为示例代码 −
const arr1 = [5,1,3,4,2]; const arr2 = [8,10,9,7,6]; const sorter = (a, b) => b - a; const greatestProduct = (a1, a2) => { if(a1.length !== a2.length){ return false; }; const a1Sorted = a1.slice().sort(sorter); const a2Sorted = a2.slice().sort(sorter); let res = 0; for(let i = 0; i < a1.length; i++){ res += (a1Sorted[i] * a2Sorted[i]); }; return res; }; console.log(greatestProduct(arr1, arr2));
输出
控制台中的输出如下所示 −
130
广告