इस समस्या में, हमें एक सरणी गिरफ्तारी दी जाती है। हमारा कार्य अधिकतम मान K को खोजने के लिए एक प्रोग्राम बनाना है जैसे कि सरणी में कम से कम K तत्व हों जो C++ में>=K हों।
समस्या का विवरण
हमें एक मान K खोजने की आवश्यकता है, जो इस शर्त को पूरा करता है कि सरणी में K या अधिक तत्व हैं जो K से अधिक या उसके बराबर हैं।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट :arr[] ={3, 5, 1, 7, 6, 6, 4, 8}
आउटपुट :5
स्पष्टीकरण
सरणी में तत्व जो 5:5, 6, 6, 7, 8 से अधिक या उसके बराबर हैं।
समाधान दृष्टिकोण
समस्या का एक सरल और प्रभावी समाधान सरणी को छाँटना और अंतिम सूचकांक से जाँच करना है कि क्या तत्व के बाद तत्वों की संख्या स्वयं तत्व से अधिक है। यदि हाँ, तो तत्व लौटाएँ।
उदाहरण
#include <bits/stdc++.h> using namespace std; int CalcMaximumVal(int arr[], int N){ sort(arr, arr + N); for(int i = (N - 1); i >= 0; i--){ if(arr[i] <= (N - i) ) return arr[i]; } } int main(){ int arr[] = {4,7,2,3,8}; int N = sizeof(arr)/sizeof(arr[0]); cout<<"The maximum value K such that array has at-least K elements that are >= K is "<<CalcMaximumVal(arr, N); return 0; }
आउटपुट
The maximum value K such that array has at-least K elements that are >= K is 3. हों