從 JavaScript 陣列中獲取最接近的數字


在上述問題陳述中,我們需要從給定的陣列中獲取給定目標的最接近的數字。我們必須藉助 Javascript 生成程式碼。

理解問題

手頭的問題是在陣列中找到給定目標值的最近數字。因此,可以使用邏輯演算法來解決此問題,該演算法將遍歷陣列並將每個專案與目標值進行比較。然後,我們將確定最接近的數字。因此,我們將使用 Javascript 來開發解決方案。

例如,假設我們有一個數組,例如 [7, 8, 1, 2, 5, 4],因此我們必須找到 4 的最接近的數字,在陣列中比較數字 4 後,結果將為 5,因為 5 是最接近的數字。

給定問題的邏輯

為了解決給定的問題,我們將透過迭代陣列的元素並比較當前專案與目標值之間的絕對差與先前最接近的數字與目標值之間的絕對差來找到陣列中最接近的數字。我們還將跟蹤找到的最接近的數字,以便在迭代期間找到更接近的數字時更新。

演算法

步驟 1:由於我們需要找出給定目標在陣列中的最接近的數字。為了執行此任務,我們將建立一個函式並將其命名為 getClosestNum。在這個函式中,我們將傳遞兩個引數,第一個是目標值,第二個是陣列。

步驟 2:定義函式後,在函式體內部,我們將初始化名為 closest 的變數。在這個變數中,我們將儲存迄今為止找到的最接近的數字。並將其值設定為陣列的第一個專案。

步驟 3:現在初始化另一個變數為 minDifference。此變數將儲存最接近的數字與目標值之間的最小差值。並將其值設定為第一個數字與目標值之間的絕對差。

步驟 4:在此步驟中,我們將迭代陣列中從第二個專案開始的其餘專案。

步驟 5:在迴圈中,我們將計算當前專案與目標值之間的差值。

步驟 6:現在我們將檢查計算出的差值是否小於當前的最小差值。然後,我們將 closest 變數更新為當前專案。並還將 minDifference 變數更新為計算出的差值。

步驟 7:最後,我們將返回 closest 變數,該變數儲存陣列中給定目標值的最近數字。

示例

// Function for getting closest number of target
function getClosestNum(target, array) {
   let closest = array[0];
   let minDifference = Math.abs(closest - target);

   for (let i = 1; i < array.length; i++) {
      const difference = Math.abs(array[i] - target);
      if (difference < minDifference) {
         closest = array[i];
         minDifference = difference;
      }
   }

   return closest;
}

const numbers = [4, 7, 2, 9, 5];
const targetNum = 6;
const closestNum= getClosestNum(targetNum, numbers);
console.log("Closest number:", closestNum);

輸出

Closest number: 7

複雜度

在陣列中查詢給定目標的最接近數字的時間複雜度為 O(n),其中 n 是陣列中的專案數。因為我們需要遍歷陣列中的每個專案一次,所以時間複雜度是線性的。並且程式碼的空間複雜度為 O(1),因為我們僅使用恆定數量的記憶體來儲存最接近的數字和差值。

結論

在使用 Javascript 生成上述程式碼後,我們可以找到陣列中給定值的最近數字。該程式碼遍歷陣列並將每個專案與目標值進行比較,並在找到更接近的數字時更新最接近的數字。

更新於: 2023-08-14

470 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.