Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Maximum Average Subarray I in C++
Suppose we have an array with n elements, we have to find the contiguous subarray of given length k that has the maximum average value. We have to return the maximum average value.
So, if the input is like [1,13,-5,-8,48,3] and k = 4, then the output will be 12.0, as (13-5-8+48)/4 = 12.0.
To solve this, we will follow these steps −
sum := 0
-
for initialize i := 0, when i < k, update (increase i by 1), do −
sum := sum + nums[i]
maxi := sum
-
for initialize i := k, when i < size of nums, update (increase i by 1), do −
sum := sum + nums[i] - nums[i - k]
-
if sum > maxi, then −
maxi := sum
return maxi / k
Example
Let us see the following implementation to get better understanding −
#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));
}
Input
{1,13,-5,-8,48,3}, 4
Output
12
Advertisements