हमारे पास एक सरणी ए है। ए में सभी तत्व एम बार होते हैं, लेकिन एक तत्व केवल एक बार होता है। हमें उस अद्वितीय तत्व को खोजना होगा।
इसलिए, यदि इनपुट 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] और 2^i) 0 के बराबर नहीं है, तो −
- गिनती[i] :=गिनती[i] + 1
- res :=0
- इनिशियलाइज़ i :=0 के लिए, जब i
करें - res :=res + ((गिनती[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