यहां हम देखेंगे कि सरणी में प्रत्येक तत्व के लिए निकटतम मान कैसे ज्ञात करें। यदि किसी तत्व x का अगला तत्व जो उससे बड़ा है, और सरणी में भी मौजूद है, तो वह उस तत्व का बड़ा मान होगा। यदि तत्व मौजूद नहीं है, तो -1 लौटाएं। मान लें सरणी तत्व [10, 5, 11, 6, 20, 12] हैं, तो बड़े तत्व [11, 6, 12, 10, -1, 20] हैं। चूंकि 20 का सरणी में कोई बड़ा मान नहीं है, तो -1 प्रिंट करें।
इसे हल करने के लिए, हम C++ STL में सेट का उपयोग करेंगे। सेट बाइनरी ट्री दृष्टिकोण का उपयोग करके कार्यान्वित किया जाता है। बाइनरी ट्री में हमेशा इनऑर्डर सक्सेसर अगला बड़ा तत्व होता है। इसलिए हम तत्व को O(log n) समय में प्राप्त कर सकते हैं।
उदाहरण
#include <iostream>
#include <set>
using namespace std;
void nearestGreatest(int arr[], int n) {
set tempSet;
for (int i = 0; i < n; i++)
tempSet.insert(arr[i]);
for (int i = 0; i < n; i++) {
auto next_greater = tempSet.upper_bound(arr[i]);
if (next_greater == tempSet.end())
cout << -1 << " ";
else
cout << *next_greater << " ";
}
}
int main() {
int arr[] = {10, 5, 11, 6, 20, 12};
int n = sizeof(arr) / sizeof(arr[0]);
nearestGreatest(arr, n);
}
आउटपुट
11 6 12 10 -1 20