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

C++ में लिंक्ड लिस्ट में दिए गए गुणनफल वाली जोड़ी जांचें


समस्या विवरण

एक लिंक्ड लिस्ट और गुणनफल K दिया गया है। जांचें कि क्या लिस्ट में दो संख्याएं हैं जिनका गुणनफल K के बराबर है।

उदाहरण: लिस्ट = {2, 4, 8, 12, 15}, K = 16 → जोड़ी (2, 8)

हल: हैशिंग

  1. हैश टेबल में सभी तत्व डालें
  2. लिस्ट ट्रैवर्स करें, प्रत्येक तत्व के लिए जांचें कि K वर्तमान तत्व से विभाज्य है और K/वर्तमान हैश टेबल में मौजूद है

उदाहरण कोड

#include <iostream>
#include <unordered_set>
#define MAX 100000
using namespace std;

class Node {
public:
    int data;
    Node* next;
};

void append(Node** start, int key) {
    Node* new_node = new Node;
    new_node->data = key;
    new_node->next = (*start);
    (*start) = new_node;
}

bool isPairPresent(Node* start, int K) {
    unordered_set s;
    Node* p = start;
    
    while (p != NULL) {
        int current = p->data;
        if ((K % current == 0) && (s.find(K / current) != s.end())) {
            cout << current << " " << K / current;
            return true;
        }
        s.insert(p->data);
        p = p->next;
    }
    return false;
}

int main() {
    Node* start = NULL;
    int arr[] = {2, 4, 8, 12, 15};
    int n = sizeof(arr)/sizeof(arr[0]);
    for (int i = 0; i < n; i++)
        append(&start, arr[i]);
    
    if (!isPairPresent(start, 16))
        cout << "NO PAIR EXIST";
    return 0;
}

आउटपुट

2 8
  1. - C++ में दिए गए उत्पाद के साथ N पूर्णांकों का अधिकतम GCD

    मान लीजिए हमारे पास दो पूर्णांक N और P हैं। P, N अज्ञात पूर्णांकों का उत्पाद है। हमें उन पूर्णांकों के अधिकतम संभव GCD को ढूंढना है। मान लीजिए N = 3, और P = 24, तो अलग-अलग समूह होंगे जैसे {1, 1, 24}, {1, 2, 12}, {1, 3, 8}, {1, 4, 6}, {2, 2, 6}, {2, 3, 4}। GCD हैं: 1, 1, 1, 1, 2, 1। तो उत्तर यहां 2 ह

  1. - C++ प्रोग्राम जांचने के लिए कि दिए गए ग्राफ में हैमिल्टोनियन साइकिल या पथ मौजूद है या नहीं

    एक हैमिल्टोनियन साइकिल एक हैमिल्टोनियन पथ है जैसे कि हैमिल्टोनियन पथ के अंतिम वर्टेक्स से पहले वर्टेक्स तक एक एज (ग्राफ में) है। यह एक अनडायरेक्टेड ग्राफ में एक पथ है जो ग्राफ के प्रत्येक वर्टेक्स को ठीक एक बार विजिट करता है। फंक्शन्स और उद्देश्य isSafe(): जांचता है कि क्या वर्टेक्स पहले से जोड़े

  1. - पायथन में जांचें कि दिए गए गुणनफल वाला उपसरणी सरणी में मौजूद है या नहीं

    मान लीजिए हमारे पास एक सरणी nums है जिसमें धनात्मक और ऋणात्मक संख्याएं हैं। हमारे पास एक मान k है। हमें जांचना है कि क्या कोई उपसरणी (subarray) है जिसका गुणनफल k के बराबर है। उदाहरण के लिए, यदि nums = [-2, -1, 1, 3, 5, 8], k = 6 है, तो आउटपुट True होगा क्योंकि उपसरणी [-2, -1, 3] का गुणनफल 6 है। हल