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