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

C++ में लिंक्ड लिस्ट में न्यूनतम आवृत्ति वाले तत्वों की गिनती


समस्या विवरण

एक लिंक्ड लिस्ट दी गई है जिसमें डुप्लिकेट तत्व हो सकते हैं। हमें उन तत्वों की गिनती करनी है जिनकी आवृत्ति (frequency) न्यूनतम है।

उदाहरण

इनपुट: 1→1→2→2→2→3→3

आउटपुट: 2

व्याख्या: न्यूनतम आवृत्ति 2 है (तत्व 1 और 3 की), इसलिए गिनती 2 है।

इनपुट: 1→2→3→2→4→2→5

आउटपुट: 4

व्याख्या: न्यूनतम आवृत्ति 1 है (तत्व 1, 3, 4, 5 की), इसलिए गिनती 4 है।

समाधान दृष्टिकोण

  1. लिंक्ड लिस्ट को पार करके प्रत्येक तत्व की आवृत्ति अनऑर्डर्ड मैप (unordered_map) में संग्रहीत करें।
  2. मैप से न्यूनतम आवृत्ति मान ढूंढें।
  3. उन तत्वों की गिनती करें जिनकी आवृत्ति इस न्यूनतम के बराबर है।
  4. उस गिनती को लौटाएं।

कार्यकारी प्रोग्राम

#include <iostream>
#include <unordered_map>
#include <climits>
using namespace std;

struct Node {
    int key;
    Node* next;
};

void push(Node** head_ref, int new_key) {
    Node* new_node = new Node;
    new_node->key = new_key;
    new_node->next = *head_ref;
    *head_ref = new_node;
}

int countMinFrequency(Node* head) {
    unordered_map<int, int> freq;
    Node* curr = head;
    while (curr) {
        freq[curr->key]++;
        curr = curr->next;
    }
    
    int minFreq = INT_MAX;
    for (auto& p : freq) {
        minFreq = min(minFreq, p.second);
    }
    
    int count = 0;
    for (auto& p : freq) {
        if (p.second == minFreq) count += p.second; // या count++ यदि अद्वितीय तत्व गिनने हैं
    }
    return count;
}

int main() {
    Node* head = NULL;
    push(&head, 30);
    push(&head, 50);
    push(&head, 61);
    push(&head, 40);
    push(&head, 30);
    cout << "न्यूनतम आवृत्ति वाले तत्वों की गिनती: " << countMinFrequency(head);
    return 0;
}

आउटपुट

न्यूनतम आवृत्ति वाले तत्वों की गिनती: 3
  1. C++ में मल्टीलेवल लिंक्ड सूची को समतल करना C++ में मल्टीलेवल लिंक्ड सूची को समतल करना

    इस समस्या में, हमें एक मल्टीलेवल लिंक्ड सूची दी गई है। हमारा कार्य मल्टीलेवल लिंक्ड सूची को समतल करने के लिए एक प्रोग्राम बनाना है। समतल करने का ऑपरेशन इस तरह से किया जाता है कि पहले स्तर के नोड्स पहले लिंक्ड सूची में आएंगे और फिर दूसरे स्तर के नोड्स आएंगे। मल्टीलेवल लिंक्ड सूची एक बहुआयामी डेटा संर

  1. C++ में सॉर्टेड और रोटेटेड लिंक्ड लिस्ट में रोटेशन की गिनती C++ में सॉर्टेड और रोटेटेड लिंक्ड लिस्ट में रोटेशन की गिनती

    हमें एक लिंक्ड लिस्ट दी गई है। लिस्ट पहले सॉर्ट की गई है और फिर K नोड्स द्वारा रोटेट की गई है। लक्ष्य K का मान ज्ञात करना है। यदि हमें नीचे दी गई लिंक्ड लिस्ट इनपुट के रूप में दी गई है जो K नोड्स द्वारा रोटेटेड है: तो मूल लिस्ट रही होगी: और हम यहाँ देख सकते हैं K=2 है। इनपुट लिंक्ड लिस्ट मूल सॉर्

  1. C++ में सर्कुलर लिंक्ड लिस्ट में नोड्स की गिनती करें C++ में सर्कुलर लिंक्ड लिस्ट में नोड्स की गिनती करें

    हमें नोड्स के साथ एक सर्कुलर लिंक्ड लिस्ट दी गई है और कार्य सर्कुलर लिंक्ड लिस्ट में मौजूद नोड्स की संख्या की गणना करना है। सर्कुलर लिंक्ड लिस्ट लिंक्ड लिस्ट का एक प्रकार है जिसमें पहला तत्व अंतिम तत्व की ओर इंगित करता है और अंतिम तत्व पहले तत्व की ओर इंगित करता है। सिंगली लिंक्ड लिस्ट और डबली लिं