কম্পিউটার

C++ এ K বিভিন্ন পূর্ণসংখ্যা সহ সাবরে


ধরুন আমাদের কাছে ধনাত্মক পূর্ণসংখ্যাগুলির একটি অ্যারে রয়েছে, আমরা A-এর একটি ভাল সাববারে (সংলগ্ন) বলতে পারি, যদি সেই সাব্যারেতে বিভিন্ন পূর্ণসংখ্যার সংখ্যা ঠিক K হয়। সুতরাং, যদি অ্যারে হয় [1,2,3,1 ,2] এর 3টি ভিন্ন পূর্ণসংখ্যা রয়েছে:1, 2, এবং 3। আমাদের A-এর ভাল সাবয়ারের সংখ্যা খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুটটি [1,2,3,1,4] এবং K =3 এর মত হয়, তাহলে আউটপুট হবে 4, কারণ এটি ঠিক চারটি স্বতন্ত্র পূর্ণসংখ্যা সহ তিনটি সাবয়ারে তৈরি করতে পারে, এইগুলি হল [1,2,3 ], [1,2,3,1], [2,3,1], [3,1,4]।

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

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

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int subarraysWithKDistinct(vector<int>& a, int k) {
      return atMost(a, k) - atMost(a, k - 1);
   }
   int atMost(vector <int>& a, int k){
      set <int> current;
      int j = 0;
      int ans = 0;
      int n = a.size();
      unordered_map <int, int> m;
      for(int i = 0; i < a.size(); i++){
         if(!m[a[i]]++) k--;
         while(k < 0){
            if(!--m[a[j]])
            k++;
            j++;
         }
         int x = ((i - j) + 1);
         ans += x;
      }
      return ans;
   }
};
main(){
   Solution ob;
   vector<int> v = {1,2,3,1,4};
   cout << (ob.subarraysWithKDistinct(v, 3));
}

ইনপুট

{1,2,3,1,4}, 3

আউটপুট

4

  1. C++ এ একটি সংখ্যা হিসাবে 0 সহ 'd' সংখ্যার ধনাত্মক পূর্ণসংখ্যা গণনা করুন

  2. C++ এ সর্বাধিক উপাদান হিসাবে k সহ অ-ওভারল্যাপিং সাবয়ারের দৈর্ঘ্যের সর্বাধিক যোগফল

  3. C++ এ 0 যোগ সহ সমস্ত সাবয়ারে প্রিন্ট করুন

  4. C++ ifstream সহ একটি পাঠ্য ফাইল থেকে পূর্ণসংখ্যা পড়ুন