Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 합이 가장 작은 배열에서 여러 쌍 찾기

<시간/>

문제

두 개의 정렬된 정수 배열을 각각 첫 번째 및 두 번째 인수인 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 ] ]