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

更新於: 20-Jan-2021

136 已檢視

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.