मान लीजिए कि हमने आकार N के बिना क्रमबद्ध पूर्णांकों की एक सरणी दी है। कार्य विशिष्ट अधिकतम और दूसरा अधिकतम तत्व खोजना है जो सरणी में मौजूद हैं। सरणी में डुप्लिकेट तत्व भी हो सकते हैं। इसलिए हमें केवल अलग-अलग तत्व खोजने होंगे। उदाहरण के लिए,
इनपुट-1 -
N = 5 A[ ] = { 2, 2, 1, 3, 4 }
आउटपुट -
4 3
स्पष्टीकरण - दिए गए सरणी से, हम देख सकते हैं कि '4' अधिकतम है और '3' दूसरा अधिकतम है।
इनपुट-2 -
N = 4 A[ ] = { 1,3,3,2 }
आउटपुट -
3 2
स्पष्टीकरण - आकार 4 के दिए गए सरणी से, हम देख सकते हैं कि '3' सबसे बड़ा है और '2' दूसरा सबसे बड़ा है, इसलिए हम 3 2 को आउटपुट के रूप में वापस करेंगे।
इस समस्या को हल करने का तरीका
आकार N के दिए गए सरणी में, कुछ डुप्लिकेट तत्व भी हो सकते हैं। सरणी से अधिकतम और दूसरा अधिकतम तत्व खोजने के लिए हम अधिकतम और दूसरे अधिकतम को संग्रहीत करने वाले दो चर प्रारंभ कर सकते हैं।
प्रारंभ में, यदि वर्तमान तत्व अधिकतम से अधिक है तो हम इसके मान को अधिकतम और अधिकतम (पिछले) के मान को दूसरे अधिकतम पर संग्रहीत करेंगे।
विशिष्ट तत्व को खोजने के लिए, हम जांच करेंगे कि वर्तमान तत्व अधिकतम के बराबर है या नहीं। यदि वर्तमान मान अधिकतम के बराबर नहीं है और दूसरे अधिकतम से भी अधिक है, तो हम दूसरे अधिकतम के पिछले मान को वर्तमान मान से बदल देंगे।
-
ऐरे के एन आकार को प्रारंभ करें और इनपुट लें।
-
एक फ़ंक्शन maxAndSecondMax(int arr[], int size) एक सरणी को इनपुट और सरणी के आकार के रूप में लेता है। जो दिए गए सरणी का अधिकतम और दूसरा अधिकतम तत्व लौटाता है।
-
सरणी तत्वों पर पुनरावृति करें और पता करें कि क्या वर्तमान तत्व अधिकतम से अधिक है, तो वर्तमान मान को अधिकतम के अधिकतम और पिछले मान को दूसरे अधिकतम के साथ संग्रहीत करें।
-
अन्यथा, यदि वर्तमान मान दूसरे अधिकतम से अधिक है, तो पिछले मान को वर्तमान मान से बदलें। साथ ही, वर्तमान मान अधिकतम के बराबर नहीं होना चाहिए।
-
जांचें कि क्या दूसरे अधिकतम में कोई मान नहीं है।
-
अंतिम आउटपुट के रूप में अधिकतम और दूसरा अधिकतम लौटाएं।
उदाहरण
#include<bits/stdc++.h> using namespace std; void maxAndSecondMax(int *arr, int size){ int max= INT_MIN; int s_max= INT_MIN; for(int i=0;i<size; ++i){ if(arr[i] >max){ s_max= max; max= arr[i]; } else if(arr[i]> s_max && arr[i]!= max){ s_max= arr[i]; } } if(s_max==INT_MIN){ s_max= -1; } cout<<max<<" "<<s_max; } int main(){ int N= 6; int A[N]= {1,3,2,5,6,3}; maxAndSecondMax(A,N); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाएंगे, तो यह आउटपुट को इस रूप में प्रिंट करेगा,
6 5
6 और 5 सरणी में विशिष्ट तत्व हैं जो अधिकतम और द्वितीय अधिकतम हैं।