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

जांचें कि दिए गए उत्पाद के साथ एक जोड़ी सी ++ में लिंक्ड सूची में मौजूद है या नहीं

हमारे पास तत्वों का एक सेट है। और एक उत्पाद K. कार्य यह जाँचना है कि क्या लिंक की गई सूची में दो संख्याएँ मौजूद हैं, जिनका उत्पाद K के समान है। यदि दो संख्याएँ हैं, तो उन्हें प्रिंट करें, यदि दो से अधिक संख्याएँ हैं, तो उनमें से कोई भी प्रिंट करें . मान लीजिए कि लिंक की गई सूची इस तरह है {2, 4, 8, 12, 15}, और k मान 16 है। तो यह वापस आ जाएगा (2, 8)

हम हैशिंग तकनीक का उपयोग करके इसे हल करेंगे। एक हैश तालिका लें, और सभी तत्वों को 0 के रूप में चिह्नित करें। अब सभी तत्वों को हैश तालिका में 1 के रूप में चिह्नित करें, यदि वह लिंक की गई सूची में मौजूद है। अब लिंक की गई सूची का पता लगाना शुरू करें, और जांचें कि दिया गया उत्पाद वर्तमान तत्व से विभाज्य है या नहीं। यदि हाँ, तो जांचें कि लिंक्ड सूची का (K/वर्तमान तत्व) हैश तालिका में मौजूद है या नहीं।

उदाहरण

#include <unordered_set>
#define MAX 100000
using namespace std;
class Node {
   public:
   int data;
   Node* next;
};
void append(struct 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<int> 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) == false)
   cout << "NO PAIR EXIST";
}

आउटपुट

2 8

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

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

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

    एक हैमिल्टनियन चक्र एक हैमिल्टनियन पथ है जैसे कि अंतिम शीर्ष से हैमिल्टनियन पथ के पहले शीर्ष तक एक किनारा (ग्राफ में) होता है। यह एक अप्रत्यक्ष ग्राफ़ में एक पथ है जो ग्राफ़ के प्रत्येक शीर्ष पर ठीक एक बार जाता है। कार्य और उद्देश्य: Begin    1.function isSafe() is used to check for whethe

  1. जाँच करें कि क्या दिए गए उत्पाद के साथ सबअरे पायथन में एक सरणी में मौजूद है

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