在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]

猜你喜欢