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

C++ में पहला यूनिक नंबर

मान लीजिए कि हमारे पास पूर्णांकों की एक कतार है, हमें उस कतार में पहला अद्वितीय पूर्णांक प्राप्त करने की आवश्यकता है। हमें FirstUnique नामक वर्ग को लागू करना होगा:इसे कतार में संख्याओं द्वारा प्रारंभ किया जाएगा। एक फ़ंक्शन को परिभाषित करें showFirstUnique (), यह कतार के पहले अद्वितीय पूर्णांक का मान लौटाएगा और यदि ऐसा कोई पूर्णांक नहीं है तो -1 लौटाएगा। एक और तरीका है ऐड (वैल्यू) यह क्यू में वैल्यू इन्सर्ट करेगा।

तो, अगर इनपुट पसंद है

  • [2,3,4] के साथ आरंभ करें और फिर कार्यों को निम्नानुसार कॉल करें -

  • शोफर्स्ट यूनिक ()

  • जोड़ें(5)

  • शोफर्स्ट यूनिक ()

  • जोड़ें(2)

  • शोफर्स्ट यूनिक ()

  • जोड़ें(3)

  • शोफर्स्ट यूनिक (),

तो आउटपुट क्रमशः 2, 2, 3, -1 होगा।

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

  • एक कतार को परिभाषित करें q

  • एक मानचित्र को परिभाषित करें

  • प्रारंभकर्ता सरणी लेगा

    • प्रत्येक तत्व के लिए मैं अंकों में

      • (cnt[i] 1 से बढ़ाएं)

    • प्रत्येक तत्व के लिए मैं अंकों में

      • अगर cnt[i] 1 के समान है, तो -

        • q में i डालें

  • फ़ंक्शन को परिभाषित करें showFirstUnique()

  • जबकि (नहीं q खाली है और cnt [q का पहला तत्व]> 1), करें −

    • q से तत्व हटाएं

  • वापसी (यदि q खाली है, तो -1, अन्यथा q का पहला तत्व)

  • फ़ंक्शन ऐड () को परिभाषित करें, यह मान लेगा,

  • (cnt[value] 1 से बढ़ाएं)

  • अगर cnt[value] 1 के समान है, तो -

    • q में मान डालें

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
class FirstUnique {
public:
   queue <int> q;
   map <int, int> cnt;
   FirstUnique(vector<int>& nums) {
      for (int i : nums) {
         cnt[i]++;
      }
      for (int i : nums) {
         if (cnt[i] == 1) {
            q.push(i);
         }
      }
   }
   int showFirstUnique() {
      while (!q.empty() && cnt[q.front()] > 1) q.pop();
         return q.empty() ? -1 : q.front();
   }
   void add(int value) {
      cnt[value]++;
      if (cnt[value] == 1)
         q.push(value);
   }
};
main(){
   vector<int> v = {2,3,5};
   FirstUnique ob(v);
   cout << (ob.showFirstUnique()) << endl;
   ob.add(5);
   cout << (ob.showFirstUnique()) << endl;
   ob.add(2);
   cout << (ob.showFirstUnique()) << endl;
   ob.add(3);
   cout << (ob.showFirstUnique()) << endl;
}

इनपुट

{2,3,5}
ob.showFirstUnique();
ob.add(5);
ob.showFirstUnique();
ob.add(2);
ob.showFirstUnique();
ob.add(3);
ob.showFirstUnique();

आउटपुट

2
2
3
-1

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

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

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

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

  1. C++ में एडम नंबर

    इस खंड में हम देखेंगे कि एक प्रोग्राम कैसे लिखा जाता है जो यह जांच सकता है कि दी गई संख्या एडम नंबर है या नहीं। कोड में गोता लगाने से पहले आइए देखें कि एडम नंबर क्या है? आदम संख्या एक संख्या है मान लीजिए n, तो यदि n का वर्ग और n के विपरीत का वर्ग एक-दूसरे के विपरीत हों, तो वह संख्या आदम संख्या होती