Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

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

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

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

มีวิธีแก้ที่ใช้พื้นที่เพิ่มเติม 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