একটি পূর্ণসংখ্যা অ্যারে দেওয়া আছে যেখানে ডুপ্লিকেট মান আছে। প্রতিটি স্বতন্ত্র মানের ফ্রিকোয়েন্সি (কতবার এসেছে) গণনা করুন।
উদাহরণ
ইনপুট: [1, 1, 2, 3, 4, 1, 2, 3]
আউটপুট: 1:3, 2:2, 3:2, 4:1
পদ্ধতি ১: ভিজিটেড অ্যারে (O(n²)) - শিক্ষামূলক
void frequency(int arr[], int size) {
bool visited[size] = {false};
for (int i = 0; i < size; i++) {
if (visited[i]) continue;
int count = 1;
for (int j = i+1; j < size; j++)
if (arr[i] == arr[j]) {
visited[j] = true;
count++;
}
cout << arr[i] << ": " << count << endl;
}
}
পদ্ধতি ২: আনঅর্ডার্ড ম্যাপ (O(n)) - প্রোডাকশন রেডি
#include
using namespace std;
void frequency(int arr[], int size) {
unordered_map freq;
for (int i = 0; i < size; i++)
freq[arr[i]]++;
for (auto& p : freq)
cout << p.first << ": " << p.second << endl;
}
int main() {
int arr[] = {1, 2, 3, 1, 2, 3};
int size = sizeof(arr)/sizeof(arr[0]);
frequency(arr, size);
return 0;
}
আউটপুট
1: 2 2: 2 3: 2
তুলনা
| পদ্ধতি | সময় | স্পেস | ব্যবহার |
|---|---|---|---|
| ভিজিটেড অ্যারে | O(n²) | O(n) | শিক্ষা/স্মল ইনপুট |
| অনঅর্ডার্ড ম্যাপ | O(n) | O(n) | প্রোডাকশন/বড় ইনপুট |
| সর্ট + লিনিয়ার | O(n log n) | O(1) | নো একস্ট্রা স্পেস |