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