Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

पूर्णांकों के दिए गए अवर्गीकृत सरणी में अधिकतम और दूसरा अधिकतम ज्ञात करने के लिए C++ में एक प्रोग्राम लिखें

मान लीजिए कि हमने आकार 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 सरणी में विशिष्ट तत्व हैं जो अधिकतम और द्वितीय अधिकतम हैं।


  1. C++ में एक पेड़ की अधिकतम गहराई या ऊँचाई ज्ञात करने के लिए एक प्रोग्राम लिखें

    इस समस्या में हमें एक बाइनरी ट्री दिया जाता है। हमारा काम किसी दिए गए पेड़ की अधिकतम गहराई या ऊंचाई का पता लगाने के लिए एक प्रोग्राम लिखना है। समस्या को समझने के लिए एक उदाहरण लेते हैं, पेड़ की ऊंचाई 3 होती है। एक पेड़ की अधिकतम ऊँचाई ज्ञात करने के लिए, हम उसके बाएँ और दाएँ उपप्रकार की ऊँचाई

  1. C++ प्रोग्राम दो अवर्गीकृत सरणियों के मिलन और प्रतिच्छेदन को खोजने के लिए

    इस लेख में, हम दो दिए गए अक्रमित सरणियों के मिलन और प्रतिच्छेदन को खोजने के लिए एक कार्यक्रम पर चर्चा करेंगे। आइए हम दो सरणियों को ए और बी से निरूपित करें। फिर उन सरणियों के मिलन को A ∪ B . द्वारा दर्शाया जाता है जो मूल रूप से दिए गए दोनों सरणियों में सभी तत्वों की एक सरणी है; बशर्ते कि प्रत्येक त

  1. क्रमबद्ध पूर्णांकों के दिए गए सरणी में लापता धनात्मक संख्या को खोजने के लिए जावा में एक प्रोग्राम लिखें

    मान लीजिए कि हमने बिना क्रमित पूर्णांकों की एक सरणी दी है। कार्य सकारात्मक लापता संख्या को खोजने के लिए है जो दिए गए सरणी में [0 से n] की सीमा में मौजूद नहीं है। उदाहरण के लिए, इनपुट-1 - N = 9 arr = [0,2,5,9,1,7,4,3,6] आउटपुट - 8 स्पष्टीकरण - दिए गए क्रमबद्ध सरणी में, 8 एकमात्र धनात्मक पूर्णांक ह