我們將寫一個程式來找出平均值最小的子陣列。為此,我們將迭代數組並追蹤當前子數組及其總和。對於每個元素,我們將計算當前子數組的平均值,並將其與迄今為止我們看到的最小平均值進行比較。如果它更低,我們將更新子數組的最小平均值以及開始和結束索引。迭代結束時,我們將傳回平均值最小的子數組。
要找到平均值最小的子數組,我們可以按照以下步驟操作 -
初始化兩個變量,start和end,以追蹤子數組的起始和結束索引。
使用 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中文網其他相關文章!