কম্পিউটার টিউটোরিয়াল

C++-এ সর্বোচ্চ গড় সাবঅ্যারে I (Maximum Average Subarray I)

একটি 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
  1. O(n) সময়ে প্রিফিক্স সাম ব্যবহার করে সর্বোচ্চ সাবঅ্যারে যোগফল C++-এ

  2. C++-এ ম্যাট্রিক্সে সর্বোচ্চ পাথ সাম

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

  4. স্ট্রিক্টলি ইনক্রিজিং সাব-অ্যারের সর্বোচ্চ যোগফল বের করা C++-তে