Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में K भिन्न पूर्णांकों के साथ उप-सरणी

मान लीजिए कि हमारे पास सकारात्मक पूर्णांकों की एक सरणी A है, तो हम 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++ में अधिकतम तत्व के रूप में k के साथ गैर-अतिव्यापी उपसरणियों की लंबाई का अधिकतम योग

    इस समस्या में, हमें एक सरणी और एक पूर्णांक k दिया जाता है। हमारा काम एक ऐसा प्रोग्राम बनाना है जो c++ में अधिकतम तत्व के रूप में k के साथ गैर-अतिव्यापी उप-सरणी की लंबाई का अधिकतम योग पायेगा। समस्या का विवरण - यहाँ, हमारे पास एक सरणी और एक पूर्णांक k है। हमें इस सरणी से बनाए जा सकने वाले सभी संभावित

  1. C++ में 0 योग के साथ सभी उप-सरणी मुद्रित करें

    इस समस्या में, हमें पूर्णांक मानों की एक सरणी दी जाती है और हमें इस सरणी से उन सभी उप-सरणी को प्रिंट करना होता है जिनका योग 0 के बराबर होता है। आइए विषय को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं, Input: array = [-5, 0, 2, 3, -3, 4, -1] Output: Subarray with sum 0 is from 1 to 4. Subarray with

  1. सी ++ के साथ एक पाठ फ़ाइल से पूर्णांक पढ़ें ifstream

    यहाँ C++ ifstream वाली टेक्स्ट फ़ाइल से पूर्णांक पढ़ने का एक उदाहरण दिया गया है। उदाहरण #include <fstream> #include<iostream> using namespace std; int main() {    //initialie the array size    int arr[30];    ifstream is("a.txt");    int