ধরুন আমাদের n উপাদানের একটি অ্যারে আছে। অ্যারে থেকে নির্বাচন করার জন্য আমাদেরকে সর্বাধিক সংখ্যক উপাদান খুঁজে বের করতে হবে, যেমন দুটি নির্বাচিত উপাদানের মধ্যে পরম পার্থক্য 1 এর কম বা সমান। সুতরাং যদি অ্যারেটি [2, 2, 3, 4, 5], তাহলে উপাদানটি 3 হবে, তাই সর্বাধিক গণনা সহ ক্রম হল 2, 2, 3৷
0 এবং 1 এর পরম পার্থক্য মানে, সংখ্যাটি x এবং x + 1 টাইপ হতে পারে। তাই ধারণাটি হল অ্যারের উপাদানগুলির ফ্রিকোয়েন্সি সংরক্ষণ করা। তাই আমরা যদি পরপর দুটি উপাদানের সর্বোচ্চ যোগফল খুঁজে পাই, তাহলে এটি হবে সমাধান।
উদাহরণ
#include <iostream> #include <map> using namespace std; int maxElem(int arr[], int n) { map<int,int> occurrence; for(int i=0;i<n;++i){ if(occurrence[arr[i]]) occurrence[arr[i]] += 1; else occurrence[arr[i]] = 1; } int ans = 0, key; map<int,int>:: iterator it=occurrence.begin(); while(it!=occurrence.end()) { key = it->first; ++it; if(occurrence[key+1]!=0) ans=max(ans,occurrence[key]+occurrence[key+1]); } return ans; } int main(){ int arr[] = {2, 2, 3, 4, 5}; int n = sizeof(arr)/sizeof(arr[0]); cout<<"Result is: " << maxElem(arr, n); }
আউটপুট
Result is: 3