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

C++ का उपयोग करके दो सरणियों में तत्वों की गिनती


मान लीजिए हमारे पास दो अनसॉर्टेड सरणी arr1[] और arr2[] दी गई हैं। कार्य arr2[] में तत्वों की कुल संख्या गिनना है जिनके लिए arr1[] का प्रत्येक तत्व arr2[] में मौजूद तत्वों से कम या बराबर है। हालांकि, दोनों सरणियों में तत्व डुप्लिकेट भी हो सकते हैं।

उदाहरण के लिए,

इनपुट-1 -

N = 6 M = 7 arr1[N] = {1, 2, 5, 0, 6, 3} arr2[M] = {0, 0, 1, 2, 1, 3, 4, 6, 8}

आउटपुट -

4 5 7 2 8 6

इस प्रॉब्लम को हल करने के लिए उपयोग किया गया दृष्टिकोण

arr1[] के प्रत्येक तत्व को गिनने और जांचने के लिए कि क्या वे arr2[] में मौजूद तत्वों से कम या बराबर हैं, विचार यह है कि arr2[] को सॉर्ट करें और बाइनरी सर्च मेथड का उपयोग करके arr1[] के उस तत्व को ढूंढें जो arr2[] में मौजूद तत्व से कम या बराबर है।

  • arr1 और arr2 के आकार को 'm' और 'n' के रूप में इनपुट लें।

  • सरणी तत्वों का इनपुट लें।

  • एक फंक्शन countInSecond(int *arr1, int *arr2, int m, int n) दो सरणियों और उसके आकार को इनपुट के रूप में लेता है और arr2[] में मौजूद तत्व की गिनती लौटाता है।

  • arr2[] को सॉर्ट करें।

  • arr1[] पर पुनरावृति करें और arr2[] में विशेष तत्व को ढूंढने के लिए बाइनरी सर्च का उपयोग करें।

  • कम या बराबर तत्व की गिनती लौटाएं।

उदाहरण

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

void countInSecond(int *nums1, int *nums2, int m, int n) {
    sort(nums2, nums2 + n);
    for (int i = 0; i < m; i++) {
        int s = 0;
        int e = n - 1;
        while (s <= e) {
            int mid = (s + e) / 2;
            if (nums2[mid] <= nums1[i])
                s = mid + 1;
            else
                e = mid - 1;
        }
        cout << e + 1 << " ";
    }
}

int main() {
    int m = 6;
    int n = 9;
    int arr1[m] = {1, 2, 5, 0, 6, 3};
    int arr2[n] = {0, 0, 1, 2, 1, 3, 4, 6, 8};
    countInSecond(arr1, arr2, m, n);
    return 0;
}

आउटपुट

उपरोक्त कोड चलाने पर निम्न आउटपुट उत्पन्न होगा,

4 5 7 2 8 6

arr1 के सभी तत्वों की गिनती जो arr2 में उनसे कम या बराबर हैं, वे {4 5 7 2 8 6} हैं।


  1. - C++ में दो सरणियों के योग को बराबर करने वाली जोड़ी ढूंढें

    समस्या विवरण दो सरणियां दी गई हैं जिनमें अलग-अलग संख्या में तत्व हैं। हमें एक जोड़ी (x, y) ढूंढनी है जहां x पहली सरणी में है और y दूसरी सरणी में है। इस जोड़ी को स्वैप करने के बाद दोनों सरणियों का योग बराबर होना चाहिए। उदाहरण: सरणी A = [4, 1, 2, 2, 1, 1] (योग = 11) और सरणी B = [3, 3, 6, 3] (योग = 1

  1. - C++ में काउंटिंग सॉर्ट का उपयोग करके माध्यिका और बहुलक

    मान लीजिए हमारे पास आकार n की एक सरणी है, हमें काउंटिंग सॉर्ट तकनीक का उपयोग करके माध्यिका (Median) और बहुलक (Mode) ढूंढना है। यह तकनीक उपयोगी है, जब सरणी तत्व सीमित रेंज में हैं। मान लीजिए तत्व {1, 1, 1, 2, 7, 1} हैं, तो बहुलक 1 है, और माध्यिका 1.5 है। आइए देखें कि माध्यिका क्या है और बहुलक क्या है

  1. - C++ में पॉइंटर का उपयोग करके सरणी के एलिमेंट्स एक्सेस करने का प्रोग्राम

    पॉइंटर्स वेरिएबल्स के मेमोरी स्थान या पते को संग्रहीत करते हैं। दूसरे शब्दों में, पॉइंटर्स एक मेमोरी स्थान को संदर्भित करते हैं और उस मेमोरी स्थान पर संग्रहीत मान को प्राप्त करना पॉइंटर को डीरेफरेंस करना कहलाता है। एक प्रोग्राम जो सरणी के एकल एलिमेंट को एक्सेस करने के लिए पॉइंटर्स का उपयोग करता है,