इस कार्यक्रम में हम देखेंगे कि हम किसी सरणी में विषम संख्या में आने वाली संख्या कैसे प्राप्त कर सकते हैं। कई अलग-अलग दृष्टिकोण हैं। सबसे आसान तरीकों में से एक ZOR ऑपरेशन कर रहा है। यदि कोई संख्या स्वयं के साथ XORed है, तो वह 0 होगी। इसलिए यदि कोई संख्या सम संख्या को XORed करती है, तो वह 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