दिलचस्प पोस्ट
मैं AJAX वेबसर्विज पर भेजने के लिए एक JSON ऑब्जेक्ट कैसे बनाऊँ? ऑनलोड () और $ के बीच का अंतर? सी ++ में एक तर्क के रूप में सदस्य फ़ंक्शन पास करना अमान्य XML वर्णों को सी # में से बचें अन्य (बोलचाल) भाषाओं में कोडिंग स्वगर्जर विरासत और संरचना जावा छविओआईओ मानक पुस्तकालय का उपयोग करके टीआईएफएफ छवि फाइल को पढ़ और नहीं पढ़ सकते हैं सी में फ्लशिंग बफ़र्स JSF कैश स्टेटिक संसाधन फ़िल्टर अजगर में टाइमआउट फ़ंक्शन कैसे करें, एक सेकंड से कम समयबाह्य कैसे numpy में रिकॉर्ड सरणी में सीएसवी को पढ़ने के लिए? मैं php.ini के लिए php.ini कहां मिल सकता हूं JQGrid: संपादित करने के बाद मैं एक ड्रॉपडाउन कैसे रिफ्रेश कर सकता हूँ? ASP.NET MS11-100: मैं पोस्ट किए गए फार्म मूल्यों की अधिकतम संख्या को कैसे बदल सकता हूँ? पायथन में ऑडियो रिकॉर्ड और रिकॉर्ड करें

सरणी में एकमात्र अनपेक्षित तत्व ढूंढें

एक्सेंचर साक्षात्कार सवाल:

आपको 2n+1 के आकार की एक सरणी दी गई है जो कि पूर्णांक के n जोड़े हैं (हो सकता है +ve , -ve या 0 ) और एक अनियमित तत्व।

कैसे आप unpaired तत्व मिल जाएगा?

जोड़ी का डुप्लिकेट मतलब है तो (3,3) एक जोड़ी है और (3,-3) एक जोड़ी नहीं है।

वेब के समाधान से एकत्रित समाधान "सरणी में एकमात्र अनपेक्षित तत्व ढूंढें"

सभी तत्वों के XOR ले लो।

जोड़े को रद्द कर देंगे

 a XOR a = 0 

और इसका परिणाम केवल एकमात्र तत्व होगा जैसा कि

 0 XOR a = a 

अगर सरणी को नष्ट करने के लिए ठीक है तो आप XOR आसन्न तत्व कर सकते हैं। सरणी के अंतिम तत्व में एक बार अनपेक्षित तत्व होता है:

 N = Num of elements in array. for( i=1 to N ) arr[i] ^= arr[i-1]; print arr[N-1] 

यदि सरणी को नष्ट करने के लिए ठीक नहीं है, तो आप परिणाम रखने के लिए एक चर का उपयोग कर सकते हैं:

 N = Num of elements in array. Unpaired = arr[0]; for( i=1 to N ) Unpaired = Unpaired ^ arr[i]; print Unpaired 

ऐसा करने के लिए सी फंक्शन:

 int findUnpaired(int *arr,int len) { int i; // loop counter. int unpaired; // to hold the unpaired element. unpaired = arr[0]; // initialize it with the 1st array ele. for(i=1;i<len;i++) { // loop for all remaining elements. unpaired ^= arr[i]; // XOR each element with the running XOR. } return unpaired; // return result. } 

एक XOR समाधान के साथ एकल लाइन Linq उदाहरण:

डॉटनेट पर डेमो

 public static void Main() { int[] tab = { 1, 2, 3, 2, 1 }; Console.WriteLine(GetSingle(tab)); } private static int GetSingle(IEnumerable<int> tab) { return tab.Aggregate(0, (current, i) => current ^ i); } 

मज़ा और लाभ के लिए

संपादित करें:

इस स्निपेट के लिए स्पष्टीकरण

 var a = 2; var b = 2; Console.WriteLine(a ^ b); // will print 0 // because x ^ x == 0 var c = 3; Console.WriteLine(a ^ b ^ c); // will print 3 // because 0 ^ x == x Console.WriteLine(0 ^ a); // guess the output // get it? :) // Now, lets aggregate this enumerable ;) 

ओ (एन) और ओ (एन) स्पेस में सभी अनूठे मूल्यों को खोजने के लिए वैकल्पिक समाधान:

एक हैश तालिका आरंभ करें
सरणी में प्रत्येक मान के लिए, जांचें कि क्या मूल्य हैश तालिका में मौजूद है, यदि वह करता है, तो इसे हटा दें, यदि ऐसा नहीं है, तो उसे जोड़ें।
रिटर्न वैल्यू हैश तालिका के अंदर सभी आइटम है

एक शब्दकोश का उपयोग करने के लिए आसानी से संशोधित किया जा सकता है यदि पुनरावर्ती मूल्य एक बार से अधिक बार पुनरावृत्ति कर सकते हैं

Here'a एक सरल LINQ समाधान है कि आसानी से प्रत्येक अनूठी तत्व की घटनाओं की संख्या प्रदान करने के लिए बढ़ाया जा सकता है:

  int[] numbers = { -1, 0, 1, 2, 3, 4, 5, 4, 3, 2, 1 }; var numberGroups = from n in numbers group n by n into g select new { Number = g.Key, IsPaired = g.Count() == 2 }; Console.WriteLine("Unpaired elements:"); foreach (var group in numberGroups) { if (!group.IsPaired) Console.WriteLine(group.Number); } 

आउटपुट:

 Unpaired elements: -1 0 5 

सबसे अच्छा जवाब XOR ऑपरेटर है बस मज़े के लिए एक और तरीका है, यदि आप सरणी को सॉर्ट करने, उसे सॉर्ट करने और आसन्न इंटिजर्स की तुलना करने के लिए अनुमति दी गई है। यह मानता है कि सभी पूर्णांक एक बार पूर्ण होने वाले एक पूर्णांक के साथ ठीक से दो बार प्रकट होते हैं।

 // Random array of integers int[] arr = {1, 2, 3, 4, 5, 6, 7, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // Sort the array. Arrays.sort(arr); // Array now looks like: 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 9 9 // Cycle through array comparing adjacent values. for(int i = 0; i < arr.length; i++){ // This would mean the single number was the last element in the array. if(i == arr.length-1) singleNum = arr[i]; // If the adjacent elements are the same, skip foward. if(i < arr.length-1 && arr[i] == arr[i+1]) i ++; else // Otherwise, you found the single number. singleNum = arr[i]; } 

दिए गए सरणी के सभी तत्वों के बीच XOR को निष्पादित करें

 def unpaired(arr): result = 0 for i in arr: result = result^i return result 

यह भी एक अच्छा समाधान है इस उदाहरण में, हमारे पास एक चक्र मार्ग है।

 function getUpaired(arr) { var obj = {}; for (var i = 0; i < arr.length; i++) { if (typeof obj[arr[i]] !== 'undefined') { delete obj[arr[i]]; continue; } obj[arr[i]] = i; } return Number(Object.keys(obj)[0]); } getUpaired([0,0,2,1,3,2,1]);