इस समस्या में, हमें Q क्वेरी दी गई हैं। ये तीन प्रकार की हैं:
क्वेरी 1: सूची में संख्या N जोड़ें।
क्वेरी 2: सूची से संख्या N हटाएं।
क्वेरी 3: सूची के न्यूनतम और अधिकतम तत्व का अंतर वापस करें।
हमारा कार्य C++ में जोड़ने, हटाने, और अधिकतम और न्यूनतम के अंतर को वापस करने की क्वेरी को हल करने के लिए एक प्रोग्राम बनाना है।
समस्या विवरण
हमें Q संख्या में क्वेरी दी जाएंगी जो हम सूची पर करेंगे। 3 प्रकार की क्वेरी हैं: जोड़ना, हटाना, और सूची के अधिकतम और न्यूनतम तत्वों के अंतर को ढूंढना। जिसका उपयोग करके हम पहले तत्वों की सूची बनाएंगे और फिर सूची के अधिकतम और न्यूनतम तत्वों के बीच अंतर का क्वेरी 3 मान ढूंढेंगे।
उदाहरण से समझते हैं
इनपुट: Q = 6
Query (1, 4)
Query (1, 9)
Query (1, 6)
Query (2, 4)
Query (1, 3)
Query (3)
आउटपुट: 6
व्याख्या
अंत में, सूची {9, 6, 3} होगी।
अधिकतम → 9
न्यूनतम → 3
अंतर → 6
समाधान दृष्टिकोण
समस्या को हल करने का एक सरल दृष्टिकोण प्रत्येक क्वेरी को सीधे हल करना है। इन चरणों का पालन करके:
एक ऐरे आरंभ करें।
क्वेरी टाइप 1 के लिए, ऐरे में एक तत्व जोड़ें।
क्वेरी टाइप 2 के लिए, ऐरे से एक तत्व हटाएं।
क्वेरी टाइप 3 के लिए, अधिकतम और न्यूनतम के बीच अंतर ढूंढें, और मान वापस करें।
C++ प्रोग्राम उदाहरण (सरल दृष्टिकोण: ऐरे)
#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() मेथड का उपयोग करके एक्सेस किया गया)। और न्यूनतम तत्व शुरुआत में होगा (begin() मेथड का उपयोग करके एक्सेस किया गया)।
C++ में सेल्फ-बैलेंसिंग बाइनरी सर्च ट्री का कार्यान्वयन सेट का उपयोग करके किया जाता है।
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