ধরুন আমাদের পূর্ণসংখ্যার একটি সারি আছে, আমাদের সেই সারিতে প্রথম অনন্য পূর্ণসংখ্যা পুনরুদ্ধার করতে হবে। আমাদের ফার্স্টইউনিক নামক ক্লাসটি বাস্তবায়ন করতে হবে:এটি সারিতে থাকা সংখ্যা দ্বারা শুরু হবে। একটি ফাংশন 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