Chúng ta có một mảng các số nguyên được sắp xếp theo thứ tự tăng dần. Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng như đối số đầu tiên và một số tổng mục tiêu làm đối số thứ hai.
Hàm sẽ tìm và trả về hai số như vậy từ mảng mà khi được thêm vào sẽ cho tổng mục tiêu. Điều kiện để giải quyết vấn đề này là chúng ta phải làm điều này trong thời gian tuyến tính và sử dụng không gian không đổi.
Ví dụ
Sau đây là mã -
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));
Đầu ra
Sau đây là đầu ra của bảng điều khiển -
[6, 21]