C++ 中的最大平均子陣列 I
假設我們有一個包含 n 個元素的陣列,我們需要找到長度為 k 的連續子陣列,該子陣列具有最大的平均值。我們需要返回最大的平均值。
因此,如果輸入類似於 [1,13,-5,-8,48,3],且 k = 4,那麼輸出將為 12.0,因為 (13-5-8+48)/4 = 12.0。
為了解決這個問題,我們將遵循以下步驟 −
sum := 0
for 初始化 i := 0,當 i < k 時,更新(將 i 增加 1),執行 −
sum := sum + nums[i]
maxi := sum
for 初始化 i := k,當 i < nums 的大小時,更新(將 i 增加 1),執行 −
sum := sum + nums[i] - nums[i - k]
if sum > maxi,則 −
maxi := sum
return maxi / k
示例
下面我們來看一下實現過程,以便加深理解 −
#include <bits/stdc++.h> using namespace std; class Solution { public: double findMaxAverage(vector<int>& nums, int k) { int sum = 0; for (int i = 0; i < k; i++) { sum += nums[i]; } double maxi = sum; for (int i = k; i < nums.size(); i++) { sum += nums[i] - nums[i - k]; if (sum > maxi) { maxi = sum; } } return maxi / k; } }; main(){ Solution ob; vector<int> v = {1,13,-5,-8,48,3}; cout << (ob.findMaxAverage(v, 4)); }
輸入
{1,13,-5,-8,48,3}, 4
輸出
12
廣告