একটি n উপাদানের অ্যারে দেওয়া আছে। দৈর্ঘ্য k-এর সংলগ্ন সাবঅ্যারেটির মধ্যে সর্বোচ্চ গড় মান বের করতে হবে।
ইনপুট [1,13,-5,-8,48,3] এবং k=4 হলে আউটপুট 12.0। কারণ (13-5-8+48)/4 = 12.0।
সমাধানের ধাপসমূহ
- sum := 0
- প্রথম k উপাদানের যোগফল sum-এ করুন
- maxi := sum
- i := k থেকে n-1 পর্যন্ত:
- sum := sum + nums[i] - nums[i-k]
- যদি sum > maxi হয়, maxi := sum
- 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;
}
};
int 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