मान लीजिए कि हमारे पास 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