JavaScript 中帶轉折的元素最大差值


在本問題陳述中,我們必須藉助 Javascript 功能找到元素之間帶轉折的最大差值。因此,我們將使用基本的 Javascript 來獲得所需的結果。

理解問題

手頭的問題是在陣列中找到兩個專案之間的最大差值。因此,我們將為問題新增一個轉折。因此,我們不僅會找到兩個專案之間的差值,而且會找到一個專案與陣列中之前出現的任何較小專案之間的最大差值。並且我們不會重新排列陣列中的專案,因為順序很重要。

給定問題的邏輯

為了解決帶轉折的最大差值,我們將迭代給定的陣列,同時也會跟蹤迄今為止找到的最小專案。當我們迭代陣列時,我們將計算當前專案和最小專案之間的差值。然後,如果它大於當前最大值,則更新最大差值。完成此過程後,我們將確保必須考慮專案與之前出現的任何較小專案之間的差值。

演算法

步驟 1:由於我們必須找到帶轉折的專案之間的最大差值,因此為了執行此任務,我們將定義一個名為 differenceWithTwist 的函式。我們將傳遞一個數組作為引數。

步驟 2:定義函式後,我們將初始化兩個變數來跟蹤最大差值(maxDiff)和儲存迄今為止遇到的最小專案(minElement)。我們還將設定這些變數的值。將 maxDiff 設定為負無窮大值,並將 minElement 設定為陣列的第一個元素。

步驟 3:現在我們已經定義了函式和變數。在此之後,我們將遍歷陣列並從第二個專案開始。

步驟 4:在此步驟中,我們將計算當前專案和 minElement 之間的差值。

步驟 5:因此,我們將檢查條件,如果計算出的差值大於 maxDiff,我們將使用新值更新 maxDiff。

步驟 6:如果當前專案小於 minElement,我們將使用當前專案更新 minElement。

步驟 7:我們將重複步驟 3 到步驟 5,直到所有專案都已處理。然後返回 maxDiff 值以在控制檯上顯示。

示例

// Function to get the largest difference with twist
function differenceWithTwist(array) {
   let maxDiff = Number.NEGATIVE_INFINITY;
   let minElement = array[0];

   for (let i = 1; i < array.length; i++) {
      const difference = array[i] - minElement;

   if (difference > maxDiff) {
         maxDiff = difference;
      }

      if (array[i] < minElement) {
         minElement = array[i];
      }
   }

   return maxDiff;
}

// Usage of the function:
const array = [7, 2, 8, 9, 1, 4, 6];
const largestDifference = differenceWithTwist(array);
console.log("Largest difference with twist:", largestDifference);

輸出

Largest difference with twist:7

複雜度

查詢帶轉折的元素之間最大差值的時間複雜度為 O(n),其中 n 是給定陣列的大小。因為我們只遍歷陣列一次,並且對陣列中的每個專案執行恆定數量的任務。因此,該演算法在時間複雜度方面是高效的。

結論

因此,我們透過遍歷陣列並跟蹤最小元素來完成了給定的任務。並且我們找到了專案與其之前出現的任何較小元素之間的最大差值。並且該程式碼為完成給定任務提供了高效的時間複雜度。

更新於:2023年8月14日

93 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告