简单的滑动窗口 643. 子数组最大平均数 I

给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。

请你找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数。

任何误差小于 10-5 的答案都将被视为正确答案。

示例 1:

输入:nums = [1,12,-5,-6,50,3], k = 4
输出:12.75
解释:最大平均数 (12-5-6+50)/4 = 51/4 = 12.75
示例 2:

输入:nums = [5], k = 1
输出:5.00000

 1 class Solution {
 2 public:
 3     // double findMaxAverage(vector<int>& nums, int k) {
 4     //     double res = -10000.0;
 5     //     double sum = 0;
 6     //     double ave;
 7     //     for(int i = 0; i<=nums.size()-k; i++){
 8     //         if( i == 0){
 9     //             for(int j = 0; j<k; j++){
10     //                 sum+=nums[i+j];
11     //             }
12     //         }else{
13     //             sum-=nums[i-1];
14     //             sum+=nums[i+k-1];
15     //         }
16     //         ave = sum/k;
17     //         cout <<ave<<endl;
18     //         res = res>ave?res:ave;
19     //     }
20     //     return res;
21     // }
22     double findMaxAverage(vector<int>& nums, int k) {
23         int sum = 0;
24         int n = nums.size();
25         for (int i = 0; i < k; i++) {
26             sum += nums[i];
27         }
28         int maxSum = sum;
29         for (int i = k; i < n; i++) {
30             sum = sum - nums[i - k] + nums[i];
31             maxSum = max(maxSum, sum);
32         }
33         return static_cast<double>(maxSum) / k;
34     }
35 
36 };
原文地址:https://www.cnblogs.com/qianxunslimg/p/15631256.html