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

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


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

ฟังก์ชันควรค้นหาและส่งกลับตัวเลขสองตัวดังกล่าวจากอาร์เรย์ที่เมื่อเพิ่มเข้าไปจะให้ผลรวมของเป้าหมาย เงื่อนไขในการแก้ปัญหานี้คือเราต้องทำสิ่งนี้ในเวลาเชิงเส้นและใช้ปริภูมิคงที่

ตัวอย่าง

ต่อไปนี้เป็นรหัส -

const arr = [4, 6, 8, 9, 11, 12, 18, 21];
const num = 27;
const findElements = (arr = [], target) => {
   let left = 0;
   let right = arr.length - 1;
   let res = [];
   while (left < right) {
      let leftElement = arr[left];
      let rightElement = arr[right];
      if (leftElement + rightElement === target) {
         res.push(arr[left]);
         res.push(arr[right]);
         break;
      } else if (leftElement + rightElement > target) {
         right--;
      } else {
         left++;
      }
   }
   return res;
};
console.log(findElements(arr, num));

ผลลัพธ์

ต่อไปนี้เป็นเอาต์พุตคอนโซล -

[6, 21]