เรามีอาร์เรย์ของจำนวนเต็มซึ่งถูกจัดเรียงตามลำดับที่เพิ่มขึ้น เราจำเป็นต้องเขียนฟังก์ชัน 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]