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

सरणी में ऐसे जोड़े जिनमें एक की आवृत्ति दूसरे के मान के बराबर या अधिक हो - C++

समस्या विवरण

हमें धनात्मक पूर्णांकों का एक ऐरे दिया गया है। लक्ष्य उन जोड़ों (A, B) की गणना करना है जहाँ:

  • A की आवृत्ति कम से कम B है
  • B की आवृत्ति कम से कम A है

उदाहरण

इनपुट: arr[] = {3, 3, 3, 5, 5, 6, 6}

आउटपुट: 1

व्याख्या: केवल (3,3) वैध है।

इनपुट: arr[] = {3, 3, 3, 3, 3, 5, 5, 5, 6, 6}

आउटपुट: 3

व्याख्या: वैध जोड़े: (3,3), (5,5), (3,5)।

दृष्टिकोण

एक अनऑर्डर्ड मैप में सभी तत्वों की आवृत्ति स्टोर करें। फिर मैप को पार करें: प्रत्येक तत्व start और उसकी आवृत्ति end के लिए, 1 से end तक जाँचें कि क्या उस मान की आवृत्ति start से अधिक या बराबर है।

एल्गोरिदम

  1. आवृत्ति मैप um बनाएँ
  2. प्रारंभिक count = 0
  3. मैप में प्रत्येक (start, end) जोड़ी के लिए:
    • j = 1 से end तक लूप करें
    • यदि um[j] >= start तो count++
  4. count लौटाएँ

C++ कार्यान्वयन

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

int frequency_other_value(int arr[], int len) {
    int count = 0;
    unordered_map<int, int> um;
    
    for (int i = 0; i < len; ++i) um[arr[i]]++;
    
    for (auto& it : um) {
        int start = it.first;
        int end = it.second;
        for (int j = 1; j <= end; j++) {
            if (um[j] >= start) count++;
        }
    }
    return count;
}

int main() {
    int arr[] = {3, 3, 3, 5, 5, 6, 6};
    int size = sizeof(arr) / sizeof(arr[0]);
    cout << "Count: " << frequency_other_value(arr, size);
    return 0;
}

आउटपुट

Count: 1
  1. - C++ प्रोग्राम: सरणी में सबसे छोटे मान की आवृत्ति ज्ञात करना

    यहां हम देखेंगे कि सरणी में सबसे छोटे तत्व की आवृत्ति कैसे ज्ञात करें। मान लें सरणी तत्व [5, 3, 6, 9, 3, 7, 5, 8, 3, 12, 3, 10] हैं, यहां सबसे छोटा तत्व 3 है, और इस तत्व की आवृत्ति 4 है। इसलिए आउटपुट 4 है। इसे हल करने के लिए हम सूची का सबसे छोटा तत्व ज्ञात करेंगे, फिर पहले नंबर की घटनाओं को गिनेंगे

  1. - C++ में सरणी में उन जोड़ों की संख्या ढूंढना जिनका XOR 0 है

    मान लीजिए हमारे पास n तत्वों की एक सरणी है; हमें सरणी में उन जोड़ों की संख्या ढूंढनी है जिनका XOR 0 होगा। जोड़ी (x, y) जिसका XOR 0 है, तो x = y। इसे हल करने के लिए हम सरणी को सॉर्ट कर सकते हैं, फिर यदि दो लगातार तत्व समान हैं, तो काउंट बढ़ाएं। यदि सभी तत्व समान हैं, तो अंतिम काउंट गिना नहीं जा सकता

  1. - C++ में सरणी में उन सभी जोड़े (a, b) को खोजें जैसे कि a % b = k

    मान लीजिए हमारे पास एक सरणी A है, उस सरणी से हमें सभी जोड़े (a, b) प्राप्त करने हैं जैसे कि a%b = k। मान लीजिए सरणी A = [2, 3, 4, 5, 7], और k = 3, तो जोड़े हैं (7, 4), (3, 4), (3, 5), (3, 7)। इसे हल करने के लिए, हम सूची को पार करेंगे और जांचेंगे कि दी गई शर्त पूरी हो रही है या नहीं। उदाहरण #include