ধরুন আমাদের একটি অ্যারে A আছে। কিছু উপাদান আছে। কিছু উপাদান কমন। আমাদের এমন একটি উপাদান রিটার্ন করতে হবে যা অ্যারেতে ২৫% এর বেশি স্পেসে বাড়ি হয়েছে। তাই যদি A = [1, 2, 4, 4, 4, 4, 5, 5, 6, 6, 7, 7] হয়, এখানে ৪ চারবার বাড়ি হয়েছে। এটি ১২ (অ্যারের সাইজ) এর ২৫% এর বেশি।
এটি সমাধানের জন্য, আমরা নিচের ধাপগুলো অনুসরণ করব −
- এলিমেন্টগুলো পড়ুন এবং তাদের রেসপেক্টিভ ফ্রিকোয়েন্সি সংরক্ষণ করুন
- যদি ফ্রিকোয়েন্সি অ্যারে সাইজের ২৫% এর বেশি হয়, তবে রেজাল্ট রিটার্ন করুন।
উদাহরণ
বুঝতে নিচের ইমপ্লিমেন্টেশনটি দেখুন −
#include <bits/stdc++.h> using namespace std; class Solution { public: int findSpecialInteger(vector<int>& arr) { int n = arr.size(); int req = n / 4; unordered_map <int, int> m; int ans = -1; for(int i = 0; i < n; i++){ m[arr[i]]++; if(m[arr[i]] > req)ans = arr[i]; } return ans; } }; main(){ Solution ob; vector<int> c = {1,2,4,4,4,4,5,5,6,6,7,7}; cout << ob.findSpecialInteger(c); }
ইনপুট
[1,2,4,4,4,4,5,5,6,6,7,7]
আউটপুট
4