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

กำหนดว่ามีคู่ของค่าในอาร์เรย์ที่ค่าเฉลี่ยของคู่เท่ากับค่าเฉลี่ยเป้าหมายใน JavaScript


เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของจำนวนเต็มที่จัดเรียงและค่าเฉลี่ยเป้าหมายเป็นอาร์กิวเมนต์แรกและตัวที่สอง

ฟังก์ชันควรกำหนดว่ามีคู่ของค่าในอาร์เรย์ที่ค่าเฉลี่ยของทั้งคู่เท่ากับค่าเฉลี่ยเป้าหมายหรือไม่

มีวิธีแก้ปัญหาด้วย O(1) ความซับซ้อนของพื้นที่เพิ่มเติมและความซับซ้อนของเวลา O(n) เนื่องจากอาร์เรย์ถูกจัดเรียง จึงมีดัชนีสองดัชนีที่เหมาะสม:ตัวหนึ่งเริ่มจากจุดสิ้นสุด (เช่น y) อีกตัวหนึ่งจากจุดสิ้นสุดไปยังจุดเริ่มต้นของอาร์เรย์ (เช่น x)

ตัวอย่าง

รหัสสำหรับสิ่งนี้จะเป็น −

const arr = [1, 2, 4, 6, 7, 9, 11];
const averagePair = (arr = [], target = 1) => {
   let x = arr.length − 1;
   for (let y = 0; y < x; y++) {
      while (y < x && arr[x] + arr[y] > 2*target) {
         x−−;
      };
      if (x !== y && arr[x] + arr[y] === 2 * target) {
         return true;
      };
   };
   return false;
};
console.log(averagePair(arr, 6.5));

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

true