JavaScript:相鄰元素乘積演算法


在給定的問題陳述中,我們必須藉助 Javascript 功能來計算相鄰元素的乘積。因此,我們將使用迴圈和基本數學運算來解決此問題。

理解問題

手頭的問題陳述是計算兩個相鄰元素的乘積,並且該乘積應該在陣列中最大。因此,基本上該演算法涉及陣列中兩個相鄰專案的最大乘積。此功能通常用於各種情況下,例如查詢最大利潤或解決數學難題。

上述問題的示例是:假設我們有一個像 [1, 2, 3, 4, 5, 6] 這樣的陣列,那麼此陣列中的最大乘積將是 5 * 6 = 30。因此,我們的任務是實現程式碼以生成陣列中兩個相鄰專案的最大乘積。

給定問題的邏輯

為了解決上述問題,我們將迭代輸入陣列並計算每對相鄰專案的乘積。我們將跟蹤找到的最大乘積,並在找到更大的乘積時更新。該函式將從第一個專案開始,我們將停止對倒數第二個元素的計算,因為在它形成對之後不存在專案。

演算法

步驟 1:根據給定的問題,我們必須找到陣列中存在的兩個相鄰專案的最大乘積。因此,首先我們將定義一個函式來執行相同的任務。並且此函式將接受一個名為 inputArray 的引數作為輸入。

步驟 2:定義上述函式後,我們將宣告一個變數來儲存兩個專案的最大乘積。並將其值初始化為數字。Negative_Infinity。

步驟 3:我們已定義變數來儲存最大乘積。現在我們的任務是使用 for 迴圈迭代陣列項並計算兩個相鄰專案的乘積。

步驟 4:由於我們必須找到乘積,因此在此步驟中,我們將計算兩個相鄰專案的乘積。並將乘積值儲存在名為 product 的單獨變數中。

步驟 5:在此步驟中,我們將檢查條件,即乘積的值是否為最大乘積。如果條件為真,那麼我們將使用乘積值更新 maxProduct 值。並且還返回 maxProduct 的值以在控制檯上顯示它。

示例

//Function for adjacent elements product
function adjacentElemsProduct(inputArray) {
   let maxProduct = Number.NEGATIVE_INFINITY;

   for (let i = 0; i < inputArray.length - 1; i++) {
      const product = inputArray[i] * inputArray[i + 1];
      if (product > maxProduct) {
         maxProduct = product;
      }
   }

   return maxProduct;
}

const array = [3, 6, -2, -5, 7, 3];
const result = adjacentElemsProduct(array);
console.log(result);

輸出

21

複雜度

我們建立的函式的時間複雜度為 O(n),其中 n 是輸入陣列的長度。因為我們對陣列執行了單次遍歷。並且我們在恆定時間內執行了最大乘積的比較和更新。空間複雜度為 O(1),因為我們使用了固定數量的記憶體來儲存最大乘積。

結論

計算兩個相鄰專案最大乘積的問題是一個簡單而強大的演算法。我們提供了一個演算法並計算了其時間和空間複雜度。此函式可用於各種情況下,用於查詢最大乘積、財務分析和解謎。

更新於: 2023年8月14日

613 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.