সমস্যা বিবৃতি
N পূর্ণসংখ্যাগুলির একটি অ্যারে দেওয়া, অ্যারের উপাদানগুলিকে পুনরায় সাজান যাতে পরবর্তী অ্যারের উপাদানটি আগের উপাদানের চেয়ে বড় হয় arr[i+1]> arr[i>
উদাহরণ
যদি ইনপুট অ্যারে হয় {300, 400, 400, 300} তাহলে পুনরায় সাজানো অ্যারে হবে −
{300, 400, 300, 400}। এই সমাধানে আমরা arr[i+1]> arr[i] শর্ত সহ 2টি সূচক পাই। তাই উত্তর হল 2.
অ্যালগরিদম
- যদি সমস্ত উপাদান স্বতন্ত্র হয়, তাহলে উত্তরটি হল n-1 যেখানে n হল অ্যারের উপাদানগুলির সংখ্যা
- যদি পুনরাবৃত্ত উপাদান থাকে, তাহলে উত্তর হবে n – maxFrequency
উদাহরণ
আসুন এখন একটি উদাহরণ দেখি -
#include <bits/stdc++.h> #define MAX 1000 using namespace std; int getMaxIndices(int *arr, int n) { int count[MAX] = {0}; for (int i = 0; i < n; ++i) { count[arr[i]]++; } int maxFrequency = 0; for (int i = 0; i < n; ++i) { if (count[arr[i]] > maxFrequency) { maxFrequency = count[arr[i]]; } } return n - maxFrequency; } int main() { int arr[] = {300, 400, 300, 400}; int n = sizeof(arr) / sizeof(arr[0]); cout << "Answer = " << getMaxIndices(arr, n) << endl; return 0; }
আউটপুট
Answer = 2