ধরুন আমাদের একটি তাসের ডেক আছে, প্রতিটি কার্ডে একটি পূর্ণসংখ্যা লেখা আছে। আমরা X>=2 বেছে নিতে পারি কিনা তা পরীক্ষা করতে হবে যাতে পুরো ডেকটিকে 1 বা ততোধিক তাসের দলে বিভক্ত করা সম্ভব হয়, যেখানে নিম্নলিখিত শর্তটি পূরণ করে:প্রতিটি গ্রুপে ঠিক X নম্বর কার্ড রয়েছে। প্রতিটি গ্রুপের সমস্ত কার্ডের একই নম্বর রয়েছে৷
৷সুতরাং, যদি ইনপুটটি deck =[1,2,3,4,4,3,2,1] এর মত হয়, তাহলে আউটপুটটি True হবে, কারণ সম্ভাব্য পার্টিশনগুলি হল [1,1],[2,2], [৩,৩], [৪,৪]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- একটি মানচিত্র mp সংজ্ঞায়িত করুন
- ডেকের সকল x এর জন্য
- (mp[x] 1 দ্বারা বাড়ান)
- সকল কী-মানের পেয়ারের জন্য mp
- এ
- ans :=gcd of ( ans এবং x এর মান)
- সত্য ফেরত যখন উত্তর> 1, অন্যথায় মিথ্যা
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool hasGroupsSizeX(vector<int>& deck) {
unordered_map<int, int> mp;
int ans;
for (auto x : deck)
mp[x]++;
for (auto x : mp)
ans = __gcd(ans, x.second);
return (ans > 1);
}
};
main(){
Solution ob;
vector<int> v = {1,2,3,4,4,3,2,1};
cout << (ob.hasGroupsSizeX(v));
} ইনপুট
{1,2,3,4,4,3,2,1} আউটপুট
1