문제
두 개의 정렬된 정수 배열을 각각 첫 번째 및 두 번째 인수인 arr1 및 arr2로 사용하는 JavaScript 함수를 작성해야 합니다.
함수에 대한 세 번째 인수는 숫자이고 num은 항상 두 배열의 길이보다 작습니다. 우리 함수의 임무는 정수 쌍을 선택하는 것입니다.
각 쌍에는 arr1의 첫 번째 요소와 arr2의 두 번째 요소가 있어야 합니다. 쌍은 가능한 가장 작은 합을 갖도록 선택해야 합니다. 마지막으로 우리 함수는 이 모든 (숫자) 쌍의 배열을 반환해야 합니다.
예를 들어, 함수에 대한 입력이 -
인 경우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 ] ]