इस समस्या में, हमें Q प्रश्न दिए जाते हैं। ये तीन प्रकार के होते हैं, ये हैं -
-
प्रश्न 1:सूची में नंबर N जोड़ें।
-
प्रश्न 2:सूची से संख्या N को हटा दें।
-
प्रश्न 3:सूची के न्यूनतम और अधिकतम तत्व का अंतर लौटाएं।
हमारा काम C++ में अधिकतम और न्यूनतम के अंतर को जोड़ने, हटाने और वापस करने के लिए प्रश्नों को हल करने के लिए एक प्रोग्राम बनाना है।
समस्या का विवरण
हमें प्रश्नों की एक क्यू संख्या दी जाएगी जो हम सूची में प्रदर्शन करेंगे। सूची के अधिकतम और न्यूनतम तत्व के अंतर को जोड़ने, हटाने और खोजने के लिए 3 प्रकार के प्रश्न हैं। जिसका उपयोग करके हम पहले तत्वों की सूची तैयार करेंगे और फिर सूची के अधिकतम और न्यूनतम तत्वों के बीच अंतर का Query 3 मान ज्ञात करेंगे।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट :क्यू =6
प्रश्न (1, 4)
प्रश्न (1, 9)
प्रश्न (1, 6)
प्रश्न (2, 4)
प्रश्न (1, 3)
प्रश्न (3)
आउटपुट :6
स्पष्टीकरण
अंत में, सूची {9, 6, 3} होगी।
अधिकतम -> 9
न्यूनतम -> 3
अंतर -> 6
समाधान दृष्टिकोण
समस्या को हल करने का एक सरल तरीका प्रत्येक प्रश्न के प्रत्यक्ष समाधान का उपयोग करना है। इन चरणों का पालन करके-
-
एक ऐरे को इनिशियलाइज़ करें।
-
क्वेरी प्रकार 1 के लिए, सरणी में एक तत्व जोड़ें
-
क्वेरी टाइप 2 के लिए, ऐरे से किसी एलीमेंट को हटा दें
-
क्वेरी प्रकार 3 के लिए, अधिकतम और न्यूनतम के बीच का अंतर खोजें, और मान वापस करें।
उदाहरण
#include <iostream> using namespace std; void solveQuerry(int type, int item){ int list[100]; static int index = 0; if(type == 1){ list[index] = item; index++; } else if(type == 2){ for(int i = 0; i <= index; i++) if(list[i] == item ){ list[i] = 0; break; } } else if(type == 3){ int max = -100, min = 100; for(int i = 0; i< index; i++){ if(list[i] == 0) i++; if(list[i] > max) max = list[i]; if(list[i] < min) min = list[i]; } cout<<"The difference between the maximum and minimum elements of the list is "<<(max - min); } } int main() { int Q = 6; int query[Q][2] = {{1, 5}, {1, 9}, {1, 6}, {2, 4}, {1, 3}, {3, 0}}; for(int i = 0; i< Q; i++){ solveQuerry(query[i][0], query[i][1]); } }
आउटपुट
The difference between the maximum and minimum elements of the list is 6
खोज प्रक्रिया अधिक प्रभावी हो सकती है यदि हम अन्य डेटा संरचनाओं का उपयोग करते हैं तो एक साधारण सरणी। यहां, यदि हम सरणी के बजाय स्व-संतुलन बाइनरी सर्च ट्री का उपयोग करते हैं। अधिकतम तत्व अंत में होगा (rbegin() विधि का उपयोग करके पहुँचा)। और न्यूनतम तत्व शुरुआत में होगा (शुरुआत() विधि का उपयोग करके पहुँचा)।
C++ में सेल्फ-बैलेंसिंग बाइनरी सर्च ट्री का कार्यान्वयन सेट का उपयोग करके किया जाता है।
उदाहरण
#include <bits/stdc++.h> using namespace std; set<int> myList; void solveQuerry(int type, int num){ if(type == 1){ myList.insert(num); } else if(type == 2){ myList.erase(num); } else if(type == 3){ int max = *(myList.rbegin()); int min = *(myList.begin()); cout<<"The difference between the maximum and minimum elements of the list is "<<(max - min); } } int main() { int Q = 6; int query[Q][2] = {{1, 5}, {1, 9}, {1, 6}, {2, 4}, {1, 3}, {3, 0}}; for(int i = 0; i< Q; i++){ solveQuerry(query[i][0], query[i][1]); } }
आउटपुट
The difference between the maximum and minimum elements of the list is 6