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

दो क्रमबद्ध सरणियों से योग x वाले जोड़ों की गणना - C++

समस्या विवरण

हमें दो धनात्मक संख्याओं वाली सरणियाँ और एक मान x दिया गया है। लक्ष्य उन जोड़ों (A,B) की गणना करना है जहाँ A पहली सरणी से, B दूसरी सरणी से है, और A+B=x।

उदाहरण

इनपुट: arr_1[] = {1,2,5,3,4}, arr_2[] = {7,0,1,3}, x=6

आउटपुट: 2

व्याख्या: (5,1) और (3,3)

इनपुट: arr_1[] = {1,1,1}, arr_2[] = {2,2}, x=3

आउटपुट: 2

दृष्टिकोण

साधारण: दो नेस्टेड लूप से सभी जोड़े जाँचें। समय: O(n*m)।

कुशल: पहली सरणी के तत्वों को unordered_set में डालें। दूसरी सरणी को पार करें: प्रत्येक arr_2[j] के लिए यदि x - arr_2[j] सेट में है तो गणना बढ़ाएँ। समय: O(n+m)।

C++ कार्यान्वयन (कुशल)

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

int Pair_value_x(int arr_1[], int arr_2[], int size_arr_1, int size_arr_2, int x) {
    int count = 0;
    unordered_set hash_map;
    
    for (int i = 0; i < size_arr_1; i++) hash_map.insert(arr_1[i]);
    
    for (int j = 0; j < size_arr_2; j++) {
        if (hash_map.find(x - arr_2[j]) != hash_map.end())
            count++;
    }
    return count;
}

int main() {
    int arr_1[] = {1, 2, 3, 4};
    int arr_2[] = {2, 3, 4, 5};
    int size_arr_1 = sizeof(arr_1) / sizeof(arr_1[0]);
    int size_arr_2 = sizeof(arr_2) / sizeof(arr_2[0]);
    int x = 6;
    cout << "Count: " << Pair_value_x(arr_1, arr_2, size_arr_1, size_arr_2, x);
    return 0;
}

आउटपुट

Count: 4
  1. C++ में क्रमबद्ध डबल लिंक्ड सूची में दिए गए योग x वाले ट्रिपलेट की गिनती C++ में क्रमबद्ध डबल लिंक्ड सूची में दिए गए योग x वाले ट्रिपलेट की गिनती

    समस्या विवरण एक क्रमबद्ध डबल लिंक्ड सूची दी गई है जिसमें पूर्णांक मान हैं। लक्ष्य उन ट्रिपलेट को ढूंढना है जिनका योग दिए गए मान x के बराबर है। यदि इनपुट लिंक्ड सूची 3-4-1-2 है और x 6 है तो गिनती 1 होगी (ट्रिपलेट (3,1,2))। उदाहरण इनपुट linked list: [3-4-13-5-10-10-0] x=20 आउटपुट दिए गए योग x वाले

  1. C++ में क्रमबद्ध डबल लिंक्ड सूची में दिए गए गुणनफल x वाले ट्रिपलेट की गिनती C++ में क्रमबद्ध डबल लिंक्ड सूची में दिए गए गुणनफल x वाले ट्रिपलेट की गिनती

    समस्या विवरण एक क्रमबद्ध डबल लिंक्ड सूची दी गई है जिसमें पूर्णांक मान हैं। लक्ष्य उन ट्रिपलेट को ढूंढना है जिनका गुणनफल दिए गए मान x के बराबर है। यदि इनपुट लिंक्ड सूची 3-4-1-2 है और x 6 है तो गिनती 1 होगी (ट्रिपलेट (3,1,2))। उदाहरण इनपुट linked list: [200-4-16-5-10-10-2] x=200 आउटपुट दिए गए गुणनफ

  1. दो BSTs से योग x वाले नोड जोड़ों की गणना - C++ दो BSTs से योग x वाले नोड जोड़ों की गणना - C++

    समस्या विवरण हमें दो बाइनरी सर्च ट्री (BST) और एक मान x दिया गया है। लक्ष्य उन नोड जोड़ों की गणना करना है जहाँ एक नोड पहले BST से और दूसरा दूसरे BST से हो, और उनके डेटा का योग x के बराबर हो। उदाहरण आउटपुट: 1 (जोड़ी: 8+6=14) आउटपुट: 2 (जोड़ियाँ: 5+15=20, 4+16=20) दृष्टिकोण पहले BST को इनऑर्डर (छोटे