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

C++ में मूल सरणी के समान विशिष्ट तत्वों वाले सबएरे की गिनती


हमें एक सरणी arr[] दी गई है जिसमें पूर्णांक हैं। लक्ष्य arr[] के उन सभी सबएरे की गिनती करना है जिनमें प्रत्येक में विशिष्ट तत्वों की संख्या मूल सरणी में विशिष्ट तत्वों की संख्या के समान हो। यदि मूल सरणी [1,1,2,3] है तो सबएरे होंगे [1,2,3] और [1,1,2,3]।

मूल सरणी में कुल विशिष्ट तत्व 3 हैं। दोनों सबएरे में कुल विशिष्ट तत्व भी 3 हैं।

उदाहरण सहित समझ

इनपुट - arr[] = {1,2,1,2,3,4,2 };

आउटपुट - मूल सरणी के समान कुल विशिष्ट तत्वों वाले सबएरे की संख्या: 6

व्याख्या - arr[] में विशिष्ट तत्व 4 हैं (1,2,3,4)। समान संख्या में विशिष्ट तत्वों वाले सबएरे हैं: (बाएं से दाएं विशिष्ट गिनें)

[1,2,1,2,3,4], [2,1,2,3,4], [1,2,3,4], [1,2,3,4,2], [2,1,2,3,4,2], [1,2,1,2,3,4,2]

इनपुट - arr[] = {8,7,5,6,10 };

आउटपुट - मूल सरणी के समान कुल विशिष्ट तत्वों वाले सबएरे की संख्या: 1

व्याख्या - arr[] में विशिष्ट तत्व 5 हैं (5,6,7,8,10)। समान संख्या में विशिष्ट तत्वों वाले सबएरे हैं: [8,7,6,5,10]. केवल 1।

प्रोग्राम में उपयोग किया गया दृष्टिकोण

  • पूर्णांक संख्याओं की एक सरणी arr[] लें और सरणी का आकार गणना करें।
  • फंक्शन sub_distinct(int arr[], int size) सरणी लेता है और लगातार तत्वों में 1 का अंतर वाले सबएरे की गिनती लौटाता है।
  • अस्थायी चर count और चर right और left लें।
  • यादृच्छिक जोड़े बनाने के लिए unordered_map प्रकार का एक चर लें।
  • सरणी के आकार तक 0 से FOR लूप शुरू करें और इसके अंदर arr[i] का मान unordered_map में सेट करें।
  • अब, unordered_map का आकार गणना करें और unordered_map को साफ़ करें।
  • सरणी के आकार तक 0 से FOR लूप शुरू करें।
  • लूप के अंदर, WHILE शुरू करें जब तक right < size और left < unordered_map का आकार।
  • um[arr[right]] का मान प्री-इन्क्रीमेंट करें।
  • अब, जांचें यदि um[arr[right]] == 1 तो left के मान को 1 से प्री-इन्क्रीमेंट करें।
  • WHILE के बाहर, right के मान को 1 से प्री-इन्क्रीमेंट करें।
  • जांचें यदि left == unordered_map का आकार तो count = count + size - right + 1 सेट करें।
  • um[arr[i]] को 1 से डिक्रीमेंट करें।
  • जांचें यदि um[arr[i]] == 0 तो left को 1 से डिक्रीमेंट करें।
  • काउंट लौटाएँ।
  • परिणाम प्रिंट करें।

उदाहरण

#include <bits/stdc++.h>
using namespace std;

int sub_distinct(int arr[], int size) {
    int count = 0, right = 0, left = 0;
    unordered_map<int, int> um;
    for (int i = 0; i < size; ++i) {
        um[arr[i]] = 1;
    }
    int um_size = um.size();
    um.clear();
    for (int i = 0; i < size; ++i) {
        while (right < size && left < um_size) {
            ++um[arr[right]];
            if (um[arr[right]] == 1) {
                ++left;
            }
            ++right;
        }
        if (left == um_size) {
            count = count + (size - right + 1);
        }
        --um[arr[i]];
        if (um[arr[i]] == 0) {
            --left;
        }
    }
    return count;
}

int main() {
    int arr[] = {4, 3, 2, 5};
    int size = sizeof(arr) / sizeof(arr[0]);
    cout << "Count of subarrays having total distinct elements same as original array are: " << sub_distinct(arr, size);
    return 0;
}

आउटपुट

Count of subarrays having total distinct elements same as original array are: 1
  1. - C++ में सरणी में गैर-दोहराव वाले (विभिन्न) तत्वों का गुणनफल

    हमें दोहराव या डुप्लिकेट तत्वों वाली एक सरणी दी गई है और कार्य उन सभी तत्वों का गुणनफल खोजना है जो दी गई सरणी में गैर-दोहराव वाले या विशिष्ट हैं और परिणाम प्रदर्शित करना है।उदाहरणइनपुट-: arr[] = {2, 1, 1, 2, 3, 4, 5, 5 } आउटपुट-: 120 व्याख्या-: चूंकि 1, 2 और 5 एक से अधिक बार दोहरा रहे हैं तो हम उन्ह

  1. - C++ में सॉर्टेड एरे में निरपेक्ष विशिष्ट गिनती

    एक एरे समान डेटा प्रकार के तत्वों का एक संग्रह है। एक सॉर्टेड एरे एक एरे है जिसमें तत्व आरोही या अवरोही क्रम के अनुक्रम में संग्रहीत होते हैं। विशिष्ट गिनती उन तत्वों की संख्या है जो समान नहीं हैं। निरपेक्ष विशिष्ट गिनती तत्वों के निरपेक्ष मान की विशिष्ट गिनती है यानी चिह्न के बिना मान (अनसाइन्ड मा

  1. - पायथन में सरणी में विशिष्ट तत्वों की गिनती

    पायथन में सूची में डुप्लिकेट तत्व हो सकते हैं। जब हम सूची की लंबाई गिनते हैं तो हमें डुप्लिकेट तत्वों सहित कुल लंबाई मिलती है। लेकिन इस लेख में हम देखेंगे कि सूची में विशिष्ट तत्वों या अद्वितीय तत्वों की कुल गिनती कैसे प्राप्त करें। उदाहरण नीचे दिए गए उदाहरण में हम collections मॉड्यूल से counter()