给你一个由 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 };