কম্পিউটার

K সাইজের সাব-অ্যারের সংখ্যা এবং C++ এ থ্রেশহোল্ডের চেয়ে বড় বা সমান গড়


ধরুন আমাদের কাছে পূর্ণসংখ্যার একটি অ্যারে এবং দুটি পূর্ণসংখ্যা k এবং থ্রেশহোল্ড রয়েছে। আমাদের k আকারের সাব-অ্যারের সংখ্যা খুঁজে বের করতে হবে এবং থ্রেশহোল্ডের চেয়ে বেশি বা সমান গড়। সুতরাং ইনপুট যদি হয়:[2,2,2,2,5,5,5,8] এবং k =3 এবং থ্রেশহোল্ড =4, তাহলে আউটপুট হবে 3। কারণ সাবয়ারে [2,5,5] , [5,5,5] এবং [5,5,8] এর গড় যথাক্রমে 4, 5 এবং 6।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • যোগফল :=0, div :=k এবং n :=অ্যারেতে উপাদানের সংখ্যা

  • সমষ্টি সেট করুন :=arr এর সমস্ত উপাদানের যোগফল

  • ret :=0

  • i এর জন্য :=0 এবং j রেঞ্জ k থেকে n – 1, i এবং j উভয়কে 1 দ্বারা বাড়ান

    • যদি যোগফল / div>=থ্রেশহোল্ড হয়, তাহলে রেস 1 দ্বারা বৃদ্ধি করুন

    • arr[i]

      দ্বারা যোগফল হ্রাস করুন
    • arr[j>

      দ্বারা যোগফল বাড়ান
  • যদি যোগফল / div>=থ্রেশহোল্ড হয়, তাহলে ret 1 দ্বারা বাড়ান

  • রিটার্ন রিটার্ন।

উদাহরণ (C++)

আসুন আরও ভালোভাবে বোঝার জন্য নিচের বাস্তবায়ন দেখি −

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int numOfSubarrays(vector<int>& arr, int k, int threshold) {
      double sum = 0;
      double div = k;
      int n = arr.size();
      for(int i = 0; i < k; i++){
         sum += arr[i];
      }
      int ret = 0;
      for(int i = 0, j = k; j < n; i ++, j++){
         if(sum / div >= threshold ){
            ret++;
         }
         sum -= arr[i];
         sum += arr[j];
      }
      if(sum / div >= threshold ){
         ret++;
      }
      return ret;
   }
};
main(){
   vector<int> v = {2,2,2,2,5,5,5,8};
   Solution ob;
   cout << (ob.numOfSubarrays(v, 3, 4));
}

ইনপুট

[2,2,2,2,5,5,5,8]
3
4

আউটপুট

3

  1. সর্বাধিক প্রাইম যার যোগফল C++ এ দেওয়া N এর সমান

  2. ন্যূনতম সংখ্যা যা N এর থেকে ছোট বা সমান এবং C++ এ যোগফল S সহ

  3. C++ ব্যবহার করে x-এর যোগফল এবং এর অঙ্কগুলো n-এর সমান হয় এমন একটি সংখ্যা খুঁজুন।

  4. x এর সমষ্টি এবং এর সংখ্যা C++ এ দেওয়া n-এর সমান