কম্পিউটার

C++ এ প্রথম অনন্য সংখ্যা


ধরুন আমাদের পূর্ণসংখ্যার একটি সারি আছে, আমাদের সেই সারিতে প্রথম অনন্য পূর্ণসংখ্যা পুনরুদ্ধার করতে হবে। আমাদের ফার্স্টইউনিক নামক ক্লাসটি বাস্তবায়ন করতে হবে:এটি সারিতে থাকা সংখ্যা দ্বারা শুরু হবে। একটি ফাংশন showFirstUnique() সংজ্ঞায়িত করুন, এটি সারির প্রথম অনন্য পূর্ণসংখ্যার মান প্রদান করবে এবং যদি এমন কোন পূর্ণসংখ্যা না থাকে তবে -1 প্রদান করবে। আরেকটি পদ্ধতি হল যোগ(মান) এটি সারিতে মান সন্নিবেশ করবে।

সুতরাং, যদি ইনপুট মত হয়

  • [2,3,4] দিয়ে শুরু করুন তারপর ফাংশনগুলিকে নিম্নরূপ কল করুন −

  • showFirstUnique()

  • যোগ করুন(5)

  • showFirstUnique()

  • যোগ করুন(2)

  • showFirstUnique()

  • যোগ করুন(3)

  • showFirstUnique(),

তাহলে আউটপুট হবে যথাক্রমে 2, 2, 3, -1।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • একটি সারি q

    সংজ্ঞায়িত করুন
  • একটি মানচিত্র সংজ্ঞায়িত করুন cnt

  • ইনিশিয়ালাইজার অ্যারে নিয়ে যাবে

    • প্রতিটি উপাদানের জন্য i সংখ্যায়

      • (cnt[i] 1 দ্বারা বাড়ান)

    • প্রতিটি উপাদানের জন্য i সংখ্যায়

      • যদি cnt[i] 1 এর মত হয়, তাহলে −

        • q

          -এ ঢোকান
  • একটি ফাংশন showFirstUnique()

    সংজ্ঞায়িত করুন
  • যখন (q খালি নয় এবং cnt[q এর প্রথম উপাদান]> 1), করবেন −

    • q

      থেকে উপাদান মুছুন
  • রিটার্ন (যদি q খালি হয়, তাহলে -1, অন্যথায় q এর প্রথম উপাদান)

  • একটি ফাংশন সংজ্ঞায়িত করুন (), এটি মান নেবে,

  • (cnt[মান] 1 দ্বারা বৃদ্ধি করুন)

  • যদি cnt[মান] 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++ এ মিতব্যয়ী নম্বর

  2. C++ পেন্টাটোপ নম্বর

  3. C++ এ অনন্য পাথ II

  4. C++ এ অ্যাডাম নম্বর