使用 JavaScript 查找具有最小和的数组对
问题
我们需要编写一个 JavaScript 函数,该函数分别将两个已排序的整数数组作为第一个和第二个参数,arr1 和 arr2。
该函数的第三个参数将是一个数字,num,num 始终小于两个数组的长度。我们函数的任务是挑选 (num) 对整数。
每对都应该有其第一个元素来自 arr1 而第二个元素来自 arr2。这些对应该挑选,以使这些对具有尽可能小的和。最后,我们的函数应该返回所有这些 (num) 对的数组。
例如,如果输入函数的是 -
const arr1 = [1, 1, 2]; const arr2 = [1, 2, 3]; const num = 2;
那么输出应该是 -
const output = [ [1, 1], [1, 1] ]
示例
针对此问题的代码如下 -
const arr1 = [1, 1, 2];
const arr2 = [1, 2, 3];
const num = 2;
const smallestPairs = (arr1 = [], arr2 = [], num = 1) => {
const temp = Array(arr1.length).fill(0);
const res = [];
let compute = () => {
let flag = Infinity;
for (let i = 0; i < arr1.length; i++) {
if (temp[i] < arr2.length && flag > (arr1[i] + arr2[temp[i]])) {
flag = arr1[i] + arr2[temp[i]];
}
}
if (flag === Infinity || res.length >= num) {
return;
} else {
for (let i = 0; i < arr1.length; i++) {
if (temp[i] < arr2.length && flag == (arr1[i] + arr2[temp[i]])) {
res.push(Array.of(arr1[i], arr2[temp[i]]));
temp[i]++;
}
}
compute();
}
}
compute();
return res.slice(0, num);
};
console.log(smallestPairs(arr1, arr2, num));输出
而且控制台中的输出将是 -
[ [ 1, 1 ], [ 1, 1 ] ]
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP