在 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 ]
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP