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

更新時間:2020-06-11

136 次檢視

開啟你的 職業

完成該課程獲得認證

開始
廣告