Computer >> Máy Tính >  >> Lập trình >> Javascript

Tìm một số cặp từ mảng có tổng nhỏ nhất trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript có hai mảng Số nguyên được sắp xếp làm đối số đầu tiên và đối số thứ hai tương ứng, arr1 và arr2.

Đối số thứ ba của hàm sẽ là một số, num và num sẽ luôn nhỏ hơn độ dài của cả hai mảng. Nhiệm vụ của hàm của chúng ta là chọn (num) cặp Số nguyên.

Mỗi cặp phải có phần tử đầu tiên từ arr1 và phần tử thứ hai từ arr2. Các cặp phải được chọn sao cho các cặp có tổng nhỏ nhất có thể. Cuối cùng, hàm của chúng ta sẽ trả về một mảng gồm tất cả các cặp (num) này.

Ví dụ:nếu đầu vào của hàm là -

const arr1 = [1, 1, 2];
const arr2 = [1, 2, 3];
const num = 2;

Sau đó, kết quả đầu ra phải là -

const output = [
   [1, 1], [1, 1]
]

Ví dụ

Mã cho điều này sẽ là -

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));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

[ [ 1, 1 ], [ 1, 1 ] ]