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

सी++ में तीसरी अधिकतम संख्या

मान लीजिए कि हमारे पास पूर्णांकों की एक गैर-रिक्त सरणी है; हमें इस सरणी में तीसरी अधिकतम संख्या ज्ञात करनी है। यदि कोई तीसरी अधिकतम संख्या नहीं है, तो अधिकतम एक वापस करें। चुनौती यह है कि हमें रैखिक समय जटिलता का उपयोग करके इसे हल करना होगा।

इसलिए, यदि इनपुट [5,3,8,9,1,4,6,2] जैसा है, तो आउटपुट 6 होगा।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • NULL के साथ a, b, c को इनिशियलाइज़ करें

  • इनिशियलाइज़ i :=0 के लिए, जब i <अंकों का आकार, अपडेट करें (i से 1 बढ़ाएँ), करें -

    • यदि a शून्य या अंक है [i]>=a का मान, तो −

      • यदि अशक्त नहीं है और nums[i]> a का मान है, तो −

        • सी:=बी, बी:=ए

      • ए:=अंक [i]

    • अन्यथा जब b रिक्त हो या nums[i]>=b का मान हो, तब -

      • यदि b रिक्त नहीं है और nums[i]> b का मान है, तो -

        • सी:=बी

      • बी:=अंक [i]

    • अन्यथा जब c अशक्त हो या nums[i]>=c का मान, तब −

      • सी:=अंक [i]

  • वापसी (यदि c शून्य है, तो a का मान, अन्यथा c का मान)

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int thirdMax(vector<int>& nums) {
      int *a, *b, *c;
      a = b = c = NULL;
      for (int i = 0; i < nums.size(); ++i) {
         if (!a || nums[i] >= *a) {
            if (a && nums[i] > *a) {
               c = b;
               b = a;
            }
            a = &nums[i];
         }
         else if (!b || nums[i] >= *b) {
            if (b && nums[i] > *b) {
               c = b;
            }
            b = &nums[i];
         }
         else if (!c || nums[i] >= *c) {
            c = &nums[i];
         }
      }
      return !c ? *a : *c;
   }
};
main(){
   Solution ob;
   vector<int> v = {5,3,8,9,1,4,6,2};
   cout << (ob.thirdMax(v));
}

इनपुट

{5,3,8,9,1,4,6,2}

आउटपुट

6

  1. C++ में मितव्ययी संख्या

    इस समस्या में, हमें एक धनात्मक पूर्णांक N दिया जाता है। हमारा कार्य यह जाँचने के लिए एक प्रोग्राम बनाना है कि दी गई संख्या मितव्ययी संख्या है या नहीं। मितव्ययी संख्या - एक संख्या जिसके अंकों की संख्या दी गई संख्या के अभाज्य गुणनखंड में अंकों की संख्या से अधिक है। उदाहरण − 625, संख्या 625 का अभाज्

  1. सी++ पेंटाटोप नंबर

    पास्कल के त्रिभुज में एक पंचकोण संख्या को पाँचवीं संख्या के रूप में वर्णित किया गया है। अब, जैसा कि आप जानते हैं, यह पांचवीं संख्या है, तो इसका मतलब है कि हमारे पास पास्कल के त्रिकोण में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है। पास्कल त्रिभुज की

  1. C++ में द्विदलीय ग्राफ में किनारों की अधिकतम संख्या

    समस्या कथन एक पूर्णांक N दिया गया है जो शीर्षों की संख्या का प्रतिनिधित्व करता है। कार्य N शीर्षों के द्विदलीय ग्राफ़ में किनारों की अधिकतम संभव संख्या ज्ञात करना है। द्विपक्षीय ग्राफ़ द्विपक्षीय ग्राफ वह होता है जिसमें शीर्षों के 2 सेट होते हैं। सेट ऐसे होते हैं कि एक ही सेट के कोने कभी भी उनके ब