Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

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

Mô tả vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào hai mảng số nguyên đã sắp xếp arr1 và arr2 làm đối số thứ nhất và thứ hai. Đối số thứ ba là một số num, luôn nhỏ hơn độ dài cả hai mảng. Nhiệm vụ là chọn num cặp số nguyên.

Mỗi cặp có phần tử đầu từ arr1 và phần tử thứ hai từ arr2. Các cặp được chọn sao cho có tổng nhỏ nhất có thể. Hàm trả về mảng chứa num cặp này.

Ví dụ, nếu đầu vào là:

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

Thì đầu ra nên là:

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

Ví dụ minh họa

Mã thực hiện:

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

Kết quả trong console sẽ là:

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