在 JavaScript 中最大化第二個陣列上的第一個陣列


問題

我們需要編寫一個 JavaScript 函式,該函式接收兩個數字陣列,即長度相同的 arr1 和 arr2。

我們的函式應混洗第一個陣列 arr1 的元素,以便其最大元素數大於陣列 arr2 的對應元素。然後,該函式應返回已混洗的陣列。

例如,如果函式的輸入是

輸入

const arr1 = [3, 5, 12, 19];
const arr2 = [2, 9, 3, 12];

輸出

const output = [3, 12, 5, 19];

輸出解釋

在混洗 arr1 之前,它有 3 個對應元素大於 arr2,但在已混洗的陣列中,所有 4 個元素都更大。

以下是程式碼

示例

 執行演示

const arr1 = [3, 5, 12, 19];
const arr2 = [2, 9, 3, 12];
const maximiseArray = (arr1 = [], arr2 = []) => {
   arr1.sort((a, b) => b - a)
   const indexes = arr2.map((v, index) => index).sort((a, b) => arr2[b] - arr2[a])
   const res = []
   for(let i = 0; i < indexes.length; i++) {
      const index = indexes[i]
      res[index] = arr1[0] > arr2[index] ? arr1.shift() : arr1.pop()
   }
   return res
}
console.log(maximiseArray(arr1, arr2));

輸出

[ 3, 12, 5, 19 ]

更新日期:23-04-2021

106 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.