1. 程式人生 > 其它 >簡單的滑動視窗 643. 子陣列最大平均數 I

簡單的滑動視窗 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 };