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

C++ में दिए गए इंडेक्स के बाईं ओर 1 और 0 की संख्या का उत्तर देने के लिए क्वेरी


दिए गए एरे के लिए क्वेरी का उत्तर देने की समस्या पर चर्चा करें। प्रत्येक क्वेरी इंडेक्स के लिए, हमें इंडेक्स के बाईं ओर 1 और 0 की संख्या खोजने की आवश्यकता है, उदाहरण के लिए।

इनपुट: arr[] = {0, 1, 1, 1, 0, 0, 0, 1, 0, 0}, queries[] = {2, 4, 1, 0, 5}
आउटपुट:
क्वेरी 1: zeros = 1, ones = 1
क्वेरी 2: zeros = 1, ones = 3
क्वेरी 3: zeros = 1, ones = 0
क्वेरी 4: zeros = 0, ones = 0
क्वेरी 5: zeros = 2, ones = 3

इनपुट: arr[] = {0, 0, 1, 1, 1, 0, 1, 0, 0, 1}, queries[] = {3, 2, 6}
आउटपुट:
क्वेरी 1: zeros = 2, ones = 1
क्वेरी 2: zeros = 2, ones = 0
क्वेरी 3: zeros = 3, ones = 3

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

नाइव दृष्टिकोण

इस समस्या का एक सरल समाधान क्वेरी के इंडेक्स तक एरे के माध्यम से ट्रैवर्स करना और प्रत्येक तत्व की जांच करना है; यदि यह 0 है, तो जीरो काउंटर को 1 से बढ़ाएं अन्यथा, वन्स काउंटर को 1 से बढ़ाएं।

उदाहरण

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

int main() {
    int nums[] = {1, 0, 0, 1, 1, 0, 0, 1, 0, 0};
    int queries[] = {2, 4, 1, 0, 5};
    int qsize = sizeof(queries) / sizeof(queries[0]);
    int zeros = 0, ones = 0;
    // प्रत्येक क्वेरी चलाने के लिए लूप।
    for(int i = 0; i < qsize; i++) {
        // जीरो और वन्स गिनना
        for(int j = 0; j < queries[i]; j++) {
            if(nums[j] == 0)
                zeros++;
            else
                ones++;
        }
        cout << "\nक्वेरी " << i+1 << ": zeros = " << zeros << ", ones = " << ones;
        zeros = 0;
        ones = 0;
    }
    return 0;
}

आउटपुट

क्वेरी 1: zeros = 1, ones = 1
क्वेरी 2: zeros = 2, ones = 2
क्वेरी 3: zeros = 0, ones = 1
क्वेरी 4: zeros = 0, ones = 0
क्वेरी 5: zeros = 2, ones = 3

कुशल दृष्टिकोण

पिछले दृष्टिकोण में, हर बार, हम नई क्वेरी के लिए 0वें इंडेक्स से 1 और 0 की गणना कर रहे थे।

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

उदाहरण

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

int main() {
    int nums[] = {1, 0, 0, 1, 1, 0, 0, 1, 0, 0};
    int queries[] = {2, 4, 1, 0, 5};
    int n = sizeof(nums) / sizeof(nums[0]);
    int arr[n][2];
    int zeros = 0, ones = 0;
    // nums एरे के माध्यम से ट्रैवर्स करना।
    for (int i = 0; i < n; i++) {
        // arr में जीरो और वन्स की संख्या स्टोर करना।
        arr[i][0] = zeros;
        arr[i][1] = ones;
        // शर्त के अनुसार वेरिएबल बढ़ाना
        if (nums[i] == 0)
            zeros++;
        else
            ones++;
    }
    int qsize = sizeof(queries) / sizeof(queries[0]);
    for (int i = 0; i < qsize; i++)
        cout << "\nक्वेरी " << i+1 << ": zeros = " << arr[queries[i]][0] << ", ones = " << arr[queries[i]][1];
    return 0;
}

आउटपुट

क्वेरी 1: zeros = 1, ones = 1
क्वेरी 2: zeros = 2, ones = 2
क्वेरी 3: zeros = 0, ones = 1
क्वेरी 4: zeros = 0, ones = 0
क्वेरी 5: zeros = 2, ones = 3

निष्कर्ष

इस ट्यूटोरियल में, हमने दिए गए एरे में प्रत्येक क्वेरी के लिए इंडेक्स के बाईं ओर 1 और 0 की संख्या लौटाने पर चर्चा की। हमने इस समस्या को हल करने के लिए एक सरल दृष्टिकोण और एक कुशल दृष्टिकोण पर चर्चा की। हमने इस समस्या के लिए C++ प्रोग्राम पर भी चर्चा की जिसे हम C, Java, Python आदि प्रोग्रामिंग भाषाओं के साथ कर सकते हैं। आशा है कि आपको यह ट्यूटोरियल मददगार लगा होगा।

  1. - n के निकटतम और m से विभाज्य संख्या खोजें C++ में

    मान लीजिए हमारे पास दो पूर्णांक n और m हैं। हमें n के निकटतम और m से विभाज्य संख्या खोजनी है। यदि ऐसी एक से अधिक संख्याएं हैं, तो वह संख्या दिखाएं जिसका निरपेक्ष मान अधिकतम हो। यदि n पूरी तरह से m से विभाज्य है, तो n वापस करें। तो यदि n = 13, m = 4, तो आउटपुट 12 होगा। इसे हल करने के लिए, हम इन चरणों

  1. - C++ में LCM और HCF दिए जाने पर दूसरी संख्या ढूंढना

    मान लीजिए हमारे पास एक संख्या A है, और LCM और GCD मान हैं, हमें दूसरी संख्या B ढूंढनी है। यदि A = 5, LCM 25 है, HCF = 4, तो दूसरी संख्या 4 होगी। हम जानते हैं कि -$$A * B = LCM * HCF$$$$B = \frac{LCM * HCF}{A}$$उदाहरण#include <iostream> using namespace std; int anotherNumber(int A, int LCM, int

  1. - C++ प्रोग्राम दी गई संख्या के अंकों का योग करने के लिए

    C++ भाषा में अंकों का योग गणना करने का एक उदाहरण निम्नलिखिक है, उदाहरण #include<iostream> using namespace std; int main() {    int x, s = 0;    cout << "संख्या दर्ज करें: ";    cin >> x;    while (x != 0) {       s =