JavaScript 陣列區域性極值個數程式


JavaScript 陣列區域性極值個數程式是計算機科學和資料分析領域中一個常見的問題。在這個問題中,我們需要使用 JavaScript 查詢陣列中的區域性極值個數。區域性極值是指數字序列中的峰值和谷值。它們是值從遞增變為遞減或從遞減變為遞增的點。在陣列中查詢區域性極值個數可能是一項具有挑戰性的任務,但它是許多資料分析應用程式中的一個重要步驟。

在本教程中,我們將提供一個使用 JavaScript 解決此問題的分步指南。我們將引導您瞭解程式碼背後的邏輯,並提供對其工作原理的清晰理解。在本教程結束時,您將能夠編寫自己的 JavaScript 程式來查詢陣列中的區域性極值個數。所以讓我們開始吧!

首先,讓我們用一些例子來理解問題陳述。

問題陳述

問題陳述要求我們找到任何給定數字陣列中的區域性極值個數。

示例 −

示例 1

Input: [1, 2, 3, 2, 1, 4, 5, 6, 5, 4, 3, 2, 1]
Output: 3

解釋 − 在給定的輸入陣列中,有三個區域性極值。第一個區域性極值位於索引 2 處,其中值從 3 變為 2。第二個區域性極值位於索引 6 處,其中值從 1 變為 4。第三個區域性極值位於索引 8 處,其中值從 6 變為 5。因此,輸出為 3。

示例 2

Input: [2, 4, 6, 8, 10]
Output: 0

解釋 − 在給定的輸入陣列中,沒有區域性極值。由於值持續遞增,因此沒有值從遞增變為遞減的點。因此,輸出為 0。

在這兩個示例中,我們可以看到輸入陣列被檢查以查詢區域性極值,並且程式輸出在陣列中找到的區域性極值個數。區域性極值個數是透過查詢陣列中值從遞增變為遞減或從遞減變為遞增的點來確定的。

現在,在理解了問題陳述之後,是時候瞭解此問題陳述的演算法了。

演算法

以下是查詢陣列中區域性極值個數的可能演算法 −

  • 步驟 1 − 將變數 'count' 初始化為 0,以跟蹤區域性極值個數。

  • 步驟 2 − 迴圈遍歷陣列,從索引 1 開始到索引 n-2 結束,其中 n 是陣列的長度。

  • 步驟 3 − 對於陣列中的每個元素,檢查它是否大於其前一個和下一個元素,或者小於其前一個和下一個元素。如果是,則遞增 'count' 變數。

  • 步驟 4 − 完成迴圈後,返回 'count' 變數作為陣列中區域性極值個數。

  • 步驟 5 − 讓我們藉助示例瞭解使用 Javascript 實現此演算法。

示例

使用 Javascript 實現上述演算法 −

在此程式中,我們定義了一個名為 'findLocalExtremaCount' 的函式,該函式將陣列作為引數並返回該陣列中區域性極值個數。然後,我們定義了兩個陣列 'arr1' 和 'arr2',並在每個陣列上呼叫了 'findLocalExtremaCount' 函式。我們使用模板文字來顯示每個陣列的輸入陣列和輸出計數。

輸入 1: arr[] = [1,2,3,2,1,4,5,6,5,4,3,2,1]

預期輸出: [1,2,3,2,1,4,5,6,5,4,3,2,1] 中區域性極值個數為 3

輸入 2: arr[] = [2,4,6,8,10]

預期輸出: [2,4,6,8,10] 中區域性極值個數為 0

function findLocalExtremaCount(arr) {
   let count = 0;
   for (let i = 1; i < arr.length - 1; i++) {
      if ((arr[i] > arr[i - 1] && arr[i] > arr[i + 1]) || (arr[i] < arr[i - 1] && arr[i] < arr[i + 1])) {
         count++;
      }
   }
   return count;
}
const arr1 = [1, 2, 3, 2, 1, 4, 5, 6, 5, 4, 3, 2, 1];
console.log(`Number of local extrema in [${arr1}] is ${findLocalExtremaCount(arr1)}`);
const arr2 = [2, 4, 6, 8, 10];
console.log(`Number of local extrema in [${arr2}] is ${findLocalExtremaCount(arr2)}`);

結論

在本教程中,我們開發了一個 JavaScript 程式來查詢陣列中的區域性極值個數。該程式實現了一個簡單的演算法,該演算法遍歷陣列並檢查每個元素以檢視它是否大於或小於其相鄰元素。如果是,則它是區域性極值,程式會遞增計數。該程式使用 for 迴圈遍歷陣列,並且時間複雜度為 O(n),其中 n 是陣列中元素的個數。

程式碼背後的邏輯很簡單,易於理解。我們使用模板文字以易於理解的格式顯示程式的輸入和輸出。該程式將陣列作為輸入,並返回該陣列中區域性極值個數。最後,我們用兩個示例陣列測試了該程式,它為每個陣列提供了正確的輸出。

更新於: 2023年5月2日

101 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告