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

C++ प्रोग्राम में सफिक्स में विशिष्ट पूर्णांकों की संख्या के लिए क्वेरीज

समस्या विवरण

इस समस्या में, हमें n पूर्णांक मानों का एक ऐरे arr[] दिया गया है। और Q क्वेरीज जिनमें प्रत्येक में एक पूर्णांक k होता है। हमारा कार्य सफिक्स में विशिष्ट पूर्णांकों की संख्या के लिए क्वेरीज को हल करने का प्रोग्राम बनाना है।

समस्या विवरण - हमें सफिक्स में विशिष्ट पूर्णांकों के लिए क्वेरीज को हल करना होगा। प्रत्येक क्वेरी के लिए हमें k से n तक यानी arr[k] से arr[n] तक अद्वितीय तत्वों की संख्या ढूंढनी होगी।

ऐरे 1-इंडेक्स्ड लिया गया है।

उदाहरण

arr[] = {5, 1, 2, 1, 6, 5}, n = 6, Q = 3, query = {1, 3, 4}

आउटपुट

4 4 3

व्याख्या

क्वेरी 1 के लिए: k = 1, N = 6, arr[1] से arr[6] तक तत्वों की गिनती। गिनती = 4।
क्वेरी 2 के लिए: k = 3, N = 6, arr[3] से arr[6] तक तत्वों की गिनती। गिनती = 4
क्वेरी 3 के लिए: k = 4, N = 6, arr[4] से arr[6] तक तत्वों की गिनती। गिनती = 3

हल करने का दृष्टिकोण

समस्या का एक सरल हल इंडेक्स k से n से शुरू करके प्रत्येक क्वेरी को हल करना है। और ऐरे के सभी अद्वितीय तत्वों को गिनना और प्रत्येक क्वेरी की गिनती वापस करना।

प्रभावी हल

समस्या का एक प्रभावी हल एक प्रीकंप्यूटेड डेटा स्ट्रक्चर का उपयोग करना है जो (n-1) से 0 तक इंडेक्स के लिए अद्वितीय गिनती संग्रहीत करता है। यह एक अनऑर्डर्ड सेट का उपयोग करके डुप्लिकेट तत्वों के जोड़ को खत्म करके किया जाता है। हम एक सहायक ऐरे का भी उपयोग कर सकते हैं, घटना गिनती के लिए।

हम ऐरे के तत्वों को अपने डेटा स्ट्रक्चर में अंतिम से kवें तत्व तक जोड़ेंगे और फिर डेटा स्ट्रक्चर में तत्वों की गिनती ढूंढेंगे (ऐरे के मामले में kवें इंडेक्स पर मान)।

उदाहरण

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

void solveQueries_DistInt(int n, int arr[], int Q, int queries[]) {
    unordered_set<int> uniqueInts;
    int distIntCount[n + 1];
    for (int i = n - 1; i >= 0; i--) {
        uniqueInts.insert(arr[i]);
        distIntCount[i + 1] = uniqueInts.size();
    }
    for (int i = 0; i < Q; i++)
        cout << "For Query " << (i+1) << ": the number of distinct integers in Suffix is " << distIntCount[queries[i]] << endl;
}

int main() {
    int n = 6, Q = 3;
    int arr[n] = {5, 1, 2, 1, 6, 5};
    int queries[Q] = {1, 3, 4};
    solveQueries_DistInt(n, arr, Q, queries);
    return 0;
}

आउटपुट

For Query 1: the number of distinct integers in Suffix is 4
For Query 2: the number of distinct integers in Suffix is 4
For Query 3: the number of distinct integers in Suffix is 3
  1. C++ में हेक्साडेसिमल से डेसिमल रूपांतरण C++ में हेक्साडेसिमल से डेसिमल रूपांतरण

    एक हेक्साडेसिमल संख्या इनपुट के रूप में दी गई है, कार्य दी गई हेक्साडेसिमल संख्या को डेसिमल संख्या में बदलना है। कंप्यूटर में हेक्साडेसिमल संख्या को आधार 16 के साथ दर्शाया जाता है और डेसिमल संख्या को आधार 10 के साथ दर्शाया जाता है और मान 0-9 से दर्शाए जाते हैं जबकि हेक्साडेसिमल संख्या में 0-15 से अं

  1. C++ में डेसिमल से हेक्साडेसिमल रूपांतरण C++ में डेसिमल से हेक्साडेसिमल रूपांतरण

    एक डेसिमल संख्या इनपुट के रूप में दी गई है, कार्य दी गई डेसिमल संख्या को हेक्साडेसिमल संख्या में बदलना है। कंप्यूटर में हेक्साडेसिमल संख्या को आधार 16 के साथ दर्शाया जाता है और डेसिमल संख्या को आधार 10 के साथ दर्शाया जाता है और मान 0-9 से दर्शाए जाते हैं जबकि हेक्साडेसिमल संख्या में 0-15 से अंक होते

  1. C++ में डेसिमल से बाइनरी रूपांतरण C++ में डेसिमल से बाइनरी रूपांतरण

    एक डेसिमल संख्या इनपुट के रूप में दी गई है, कार्य दी गई डेसिमल संख्या को बाइनरी संख्या में बदलना है। कंप्यूटर में डेसिमल संख्या को आधार 10 के साथ दर्शाया जाता है और बाइनरी संख्या को आधार 2 के साथ दर्शाया जाता है क्योंकि इसमें केवल दो बाइनरी अंक 0 और 1 होते हैं जबकि डेसिमल संख्याएं 0-9 से शुरू होने व