আমাদের একটি অ্যারে রয়েছে। A-তে সমস্ত উপাদান m বার ঘটছে, কিন্তু একটি উপাদান শুধুমাত্র একবারই ঘটে। আমাদের সেই অনন্য উপাদানটি খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুট হয় A =[6, 2, 7, 2, 2, 6, 6], m =3, তাহলে আউটপুট হবে 7।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- INT_SIZE :=8 * একটি পূর্ণসংখ্যা টাইপ ভেরিয়েবলের আকার
- আকারের একটি অ্যারে গণনা সংজ্ঞায়িত করুন:INT_SIZE। এবং 0 দিয়ে পূরণ করুন
- আরম্ভ করার জন্য i :=0, যখন i
- আরম্ভ করার জন্য j :=0, যখন j <সাইজ, আপডেট করুন (j 1 দ্বারা বাড়ান), করুন −
- যদি (arr[j] AND 2^i) 0 এর সমান না হয়, তাহলে −
- গণনা[i] :=গণনা[i] + 1
- res :=0
- আরম্ভ করার জন্য i :=0, যখন i
- res :=res + ((count[i] mod m) * 2^i)
- আরম্ভ করার জন্য j :=0, যখন j <সাইজ, আপডেট করুন (j 1 দ্বারা বাড়ান), করুন −
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ (C++)
#include <bits/stdc++.h> using namespace std; int selectUnique(unsigned int arr[], int size, int m){ int INT_SIZE = 8 * sizeof(unsigned int); int count[INT_SIZE]; memset(count, 0, sizeof(count)); for(int i = 0; i < INT_SIZE; i++) for(int j = 0; j < size; j++) if((arr[j] & (1 << i)) != 0) count[i] += 1; unsigned res = 0; for(int i = 0; i < INT_SIZE; i++) res += (count[i] % m) * (1 << i); return res; } main(){ unsigned int arr[] = { 6, 2, 5, 2, 2, 6, 6 }; int size = sizeof(arr) / sizeof(arr[0]); int m = 3; cout << selectUnique(arr, size, m); }
ইনপুট
{ 6, 2, 5, 2, 2, 6, 6 }
আউটপুট
5