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