এই প্রোগ্রামে আমরা দেখব কিভাবে আমরা একটি সংখ্যা পেতে পারি যেটি একটি অ্যারেতে বিজোড় সংখ্যক বার ঘটছে। অনেক ভিন্ন পন্থা আছে. সবচেয়ে সহজ পদ্ধতির মধ্যে একটি হল ZOR অপারেশন করা। যদি একটি সংখ্যা নিজের সাথে XOR করা হয়, তাহলে সেটি হবে 0। তাই যদি একটি সংখ্যা XOR করা হয়, তাহলে সেটি হবে 0, অন্যথায় সংখ্যাটি নিজেই।
এই সমাধানটির একটি সমস্যা আছে, যদি একাধিক উপাদানের বিজোড় সংখ্যা থাকে, তবে এটি তাদের একটিকে ফিরিয়ে দেবে।
অ্যালগরিদম
getNumOccurredOdd(arr, n)
begin res := 0 for each element e from arr, do res := res XOR e done return res end
উদাহরণ
#include <iostream> using namespace std; int getNumOccurredOdd(int arr[], int n) { int res = 0; for (int i = 0; i < n; i++) res = res ^ arr[i]; return res; } int main() { int arr[] = {3, 4, 6, 5, 6, 3, 5, 4, 6, 3, 5, 5, 3}; int n = sizeof(arr)/sizeof(arr[0]); cout << getNumOccurredOdd(arr, n) << " is present odd number of times"; }
আউটপুট
6 is present odd number of times