Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ค้นหาจำนวนคู่จากอาร์เรย์ที่มีผลรวมน้อยที่สุดใน 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 ] ]