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

更新時間: 2020-09-16

158 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

立即開始
廣告