在 JavaScript 中查詢三個數字的最大乘積


在本題中,我們的任務是利用 JavaScript 功能找到三個數字的最大乘積。因此,我們將首先使用排序技術獲取陣列中最後三個最大的項,然後計算這三個元素的乘積以獲得所需的結果。

理解問題

當前問題是在 JavaScript 中找到給定陣列中三個專案或數字的最大乘積。因此,我們將擁有一個整數陣列,我們將找出三個數字,它們的乘積在所有可能的組合中最大。例如,假設我們有一個數組 [1, 5, 3, 2, 4],那麼在這個陣列中,我們必須計算三個最大數字的乘積,例如 (3 * 4 * 5) = 60。因此,三個數字的最大乘積是 60,這就是所需的結果。

問題的邏輯

為了解決在陣列中找到三個數字的最大乘積的問題,我們需要檢查給定陣列中三個整數的所有可能組合。為此,我們將把最大乘積初始化為負無窮大。之後,我們將遍歷陣列,然後一次選擇三個數字。然後,我們將計算它們的乘積,並將該乘積與迄今為止計算的最大乘積進行比較。檢查條件:如果乘積更大,我們將用當前乘積更新最大乘積的值。

演算法

步驟 1:我們必須找到給定陣列中三個數字的最大乘積,為此,我們將定義一個函式並將其命名為 findGreatestProduct。此函式將接受一個數字陣列引數。

步驟 2:定義函式後,我們將初始化一個變數來儲存最大乘積,並將其命名為 maxProduct。將此變數的值賦值為負無窮大。

步驟 3:現在,我們將給定的輸入陣列按升序排序,這是從陣列中獲取三個最大數字的重要步驟。

步驟 4:排序給定陣列後,我們將計算排序陣列中前三個數字的乘積,並將其賦值給 maxProduct 變數。

步驟 5:由於我們已經計算了前三個數字的乘積,因此我們將遍歷陣列,從索引 2 開始,因為我們已經計算了前三個數字的乘積。

步驟 6:現在,我們將計算陣列中當前三個數字的乘積。並檢查條件:如果當前乘積大於 maxProduct,我們將用當前乘積更新 maxProduct。

步驟 7:完成所有過程後,我們將返回 maxProduct 作為三個數字的最大乘積。

示例

// Function to get the greatest product
function findGreatestProduct(nums) {
   const sortedNums = nums.sort((a, b) => a - b);
   const n = sortedNums.length;
   const product = (a, b, c) => a * b * c;

   let maxProduct = -Infinity;

   maxProduct = product(sortedNums[0], sortedNums[1], sortedNums[2]);

   for (let i = 2; i < n; i++) {
      const curProduct = product(
         sortedNums[i - 2],
         sortedNums[i - 1],
         sortedNums[i]
      );

      if (curProduct > maxProduct) {
         maxProduct = curProduct;
      }
   }

   return maxProduct;
}

// Usage of the function:
const nums = [1, 4, 3, 7, 6, 5, 9];
const greatestProduct = findGreatestProduct(nums);
console.log(greatestProduct);

輸出

378

複雜度

查詢陣列中三個數字的最大乘積的時間複雜度為 O(n log n),其中 n 是輸入陣列的大小。因為我們在遍歷專案之前使用了 sort 方法對給定陣列進行排序。sort 方法的時間複雜度為 O(n log n)。程式碼的空間複雜度為 O(1),因為我們沒有使用任何額外的資料。

結論

因此,使用建立的程式,我們可以有效地找到給定整數陣列中三個數字的最大乘積。程式碼為我們提供瞭解決給定問題的逐步過程。在程式碼中,我們考慮了所有可能的組合,並根據這些組合更新最大乘積。

更新於:2023年8月14日

448 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.