給定一個整數陣列,找到相鄰元素中乘積最大的那一對,並返回該乘積(JavaScript)


在本題中,我們的任務是找到給定陣列中相鄰元素乘積最大的一對,並返回該乘積。我們需要藉助 Javascript 的功能來實現這個問題。

給定問題的邏輯

在給定的問題陳述中,我們需要計算陣列中最大元素的乘積,並將結果輸出到控制檯。我們將透過兩種方法來實現這個問題:第一種是使用 Infinity,第二種是不使用 Infinity。Infinity 是一個全域性物件,其值大於任何數字。如果我們使用負無窮大,則表示它是最小數字。在第二種方法中,我們將首先初始化前兩個元素的乘積,並將其值與所有乘積進行比較,如果結果大於此乘積,則返回其值。

演算法 - 使用 Infinity

步驟 1 − 在程式碼開頭宣告一個整數陣列。

步驟 2 − 定義一個名為 findProduct 的函式,該函式以輸入陣列作為引數,並返回陣列中最大元素的乘積。

步驟 3 − 我們初始化一個變數來儲存最大元素和結果乘積。

步驟 4 − 我們開始一個 for 迴圈來遍歷陣列的每個元素,使用乘法運算子計算相鄰元素的乘積。

步驟 5 − 如果上述步驟的結果乘積大於步驟 3 中定義的最大乘積,我們將使用新的乘積值更新其值。

步驟 6 − 最後,顯示陣列中最大元素的最大乘積的輸出。

演算法程式碼 - 使用 Infinity

const arr = [1, 2, 3, 4, 5];
//function to calculate the largest product of adjacent items
const findProduct = (arr = []) => {
   //variable to store largest product
   var largest = -Infinity;
   for(let i = 0; i < arr.length - 1; i++){
      const product = arr[i] * arr[i + 1];
      if(product > largest){
         largest = product;
      }
   }
   return largest;
};
console.log(findProduct(arr));

演算法 - 不使用 Infinity

步驟 1 − 此步驟涉及建立一個數組,我們將從中計算兩個相鄰元素的最大乘積。

步驟 2 − 我們定義一個函式來確定陣列中兩個相鄰元素的最大乘積。

步驟 3 − 我們透過計算前兩個相鄰元素的乘積來宣告最大乘積值。

步驟 4 − 從初始化最大乘積的值和開始一個 for 迴圈開始。for 迴圈遍歷陣列,並使用乘法運算子計算相鄰元素的乘積。如果兩個相鄰元素的乘積大於當前最大乘積值,我們將新的最大值新增到步驟 3 中定義的變數中。

步驟 5 − 最後,此步驟顯示兩個最大相鄰元素的最大乘積。

演算法程式碼 - 不使用 Infinity

const arr = [5, 6, 7, 8, 9];
//function to calculate the largest product
const findLargestProduct = (arr = []) => {
   let largestProduct = arr[0] * arr[1];
   for(let i = 1; i < arr.length - 1; i++){
      const product = arr[i] * arr[i + 1];
      if(product > largestProduct){
         largestProduct = product;
      }
   }
   return largestProduct;
};
console.log(findLargestProduct(arr));

複雜度

用於確定兩個相鄰元素的乘積的第一種方法的時間和空間複雜度分別為 O(n) 和 O(1)。

程式碼具有 O(n) 時間複雜度的原因為使用單個 for 迴圈計算輸入陣列中相鄰元素的乘積。此外,程式碼的記憶體使用是恆定的,導致空間複雜度為 O(1)。

關於第二個程式碼:O(n^2) 和 O(n) 分別是時間和空間複雜度。

在第二個程式碼中,使用了兩個 for 迴圈來計算給定陣列中相鄰元素的部分和。因此,兩個迴圈都遍歷了整個陣列,所以此程式碼的時間複雜度為 O(n^2),n 是輸入陣列的大小。程式碼還使用陣列儲存部分和,其空間複雜度為 O(n)。

結論

以上程式碼有效地找到了陣列中任何相鄰元素的最大乘積。我們可以看到第一種方法的時間複雜度為 O(n),因此它比第二種方法(時間複雜度為 O(n^2))更有效,後者效率較低。因此,總的來說,使用程式碼的時間和空間複雜度來最佳化演算法效能是一個重要因素。

更新於: 2023年5月18日

2K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.