首頁 > web前端 > js教程 > 主體

JavaScript 程式找出平均值最小的子數組

WBOY
發布: 2023-08-23 23:33:13
轉載
1021 人瀏覽過

JavaScript 程序查找平均值最小的子数组

我們將寫一個程式來找出平均值最小的子陣列。為此,我們將迭代數組並追蹤當前子數組及其總和。對於每個元素,我們將計算當前子數組的平均值,並將其與迄今為止我們看到的最小平均值進行比較。如果它更低,我們將更新子數組的最小平均值以及開始和結束索引。迭代結束時,我們將傳回平均值最小的子數組。

方法

要找到平均值最小的子數組,我們可以按照以下步驟操作 -

  • 初始化兩個變量,startend,以追蹤子數組的起始和結束索引。

  • 使用 for 循環遍歷數組,追蹤當前總和以及迄今為止找到的最小平均值。

  • 在每次迭代中,將當前總和與最小平均值進行比較,如果找到新的最小值,則更新開始結束變數。

  • 如果當前總和大於最小平均值,則將起始索引向前移動,直到總和小於最小平均值。

  • 重複步驟 2-4,直到到達陣列末端。

  • 平均數最小的子陣列是從 start 開始到 end 結束的子陣列。

範例

給定一個整數數組,找出平均值最小的子數組。

這裡是一個完整的 JavaScript 工作範例,用於解決該問題 -

function findsmallestAverageSubarray(arr, k) {
   let minAvg = Number.POSITIVE_INFINITY;
   let minAvgStart = 0;
   let windowSum = 0;
   for (let i = 0; i < arr.length - k + 1; i++) {
      if (i === 0) {
         for (let j = 0; j < k; j++) {
            windowSum += arr[j];
         }
      } else {
         windowSum -= arr[i - 1];
         windowSum += arr[i + k - 1];
      }
      let windowAvg = windowSum / k;
      if (windowAvg < minAvg) {
         minAvg = windowAvg;
         minAvgStart = i;
      }
   }
   return arr.slice(minAvgStart, minAvgStart + k);
}

const arr = [1, 3, 6, -3, -4, 2, 5];
const k = 4;

console.log(findsmallestAverageSubarray(arr, k));
登入後複製

說明

  • 函數 findSmallestAverageSubarray 採用整數陣列 arr 和整數 k 作為輸入,其中 k 是子陣列。

  • 函數傳回平均值最小的子數組。

  • minAvg變數使用浮點數的最​​大可能值進行初始化。

  • minAvgStart變數用於儲存平均值最小的子數組的起始索引。

  • windowSum變數用於儲存目前子數組中元素的總和。

  • 外部循環for (let i = 0; i 用於迭代長度 k 在給定陣列 arr 中。

  • 內迴圈for (let j = 0; j 用於計算目前子陣列中元素的總和。

  • if (i === 0) 區塊用於計算第一個子陣列中元素的總和。

  • else區塊用於計算剩餘子數組中元素的總和。它減去前一個子數組的第一個元素並添加當前子數組的最後一個元素。

  • windowAvg變數用於儲存目前子數組的平均值。

  • if (windowAvg 區塊用於更新最小平均值以及具有最小平均值的子數組的起始索引。

  • 最後,函數傳回平均值最小的子數組。

以上是JavaScript 程式找出平均值最小的子數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!