সমস্যা বিবৃতি
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