কম্পিউটার

C++ এ সর্বোচ্চ গড় সাবারে I


ধরুন আমাদের 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

  1. C++ এ উপসর্গ যোগ ব্যবহার করে O(n) তে সর্বাধিক সাবয়ারের যোগফল

  2. C++ এ ম্যাট্রিক্সে সর্বাধিক পাথ যোগফল

  3. C++ এ একটি বিন্যাসের সর্বোচ্চ গড় যোগফল

  4. C++-এ সর্বোচ্চ যোগফল কঠোরভাবে বর্ধিত সাবাররে খুঁজুন