आकार के एन के साथ दिए गए एन सरणी को देखते हुए सामान्य तत्व खोजें, और यदि वे आपको अतिरिक्त स्थान का उपयोग करने की अनुमति नहीं देते हैं, तो उनके सामान्य डेटा को कुशलतापूर्वक या कम समय की जटिलता के साथ कैसे मिलेगा, ?एन सॉर्ट किए गए सरणी में कोई अतिरिक्त स्थान
पूर्व के लिए:
1. 10 160 200 500 500
2. 4 150 160 170 500
3. 2 160 200 202 203
4. 3 150 155 160 300
5. 3 150 155 160 301
यह एक साक्षात्कार सवाल यह है कि, मैं कुछ सवाल हैं जिनके समान थे पाया लेकिन वे अतिरिक्त या नहीं इनपुट अनुसार क्रमबद्ध किया जा रहा की शर्तों को शामिल नहीं किया अतिरिक्त स्मृति का उपयोग करने में सक्षम होने।
मैं ओ (एन^2 एलजी एन) जटिलता से कम किसी भी समाधान के बारे में नहीं सोच सकता था। उस मामले में, मैं सबसे सरल समाधान जो मुझे इस जटिलता देता है, जो है के साथ जाने के पसंद करते हैं:
not_found_flag = false
for each element 'v' in row-1
for each row 'i' in the remaining set
perform binary search for 'v' in 'i'
if 'v' not found in row 'i'
not_found_flag = true
break
if not not_found_flag
print element 'v' as it is one of the common element
हम मिनट और प्रत्येक पंक्ति की अधिकतम तुलना करके बेहतर बना सकते हैं और उस के आधार पर तय करें कि क्या यह उस पंक्ति के 'min_num' और 'max_num' के बीच होने वाली संख्या 'संख्या' के लिए संभव है।
द्विआधारी खोज -> हे (लॉग एन) n-1 पंक्तियों में खोज 1 संख्या के लिए: पहली पंक्ति ओ (n2logn)
चुने हैं: हे (nlogn) बाइनरी पहली पंक्ति में प्रत्येक संख्या के लिए खोज , हम किसी भी पंक्ति को चुन सकते हैं और यदि किसी भी (एन -1) पंक्तियों में चुनी गई पंक्ति का कोई तत्व नहीं मिलता है तो हमारे पास वास्तव में सामान्य डेटा नहीं है।
आपको (संभव) सामान्य तत्वों को स्टोर करने के लिए 'कुछ' अतिरिक्त स्थान की आवश्यकता है ... –
@M itchWheat। कृपया ऊपर छद्म कोड देखें। अगर हम आम तत्वों को प्रिंट करने के साथ अच्छे हैं, तो क्या हमें वास्तव में अतिरिक्त संग्रहण की आवश्यकता है? – user1071840
क्या आप वास्तव में बाइनरी खोज से किसी भी चीज को सहेज रहे हैं .. चूंकि आपको सभी सामान्य तत्वों को खोजने की ज़रूरत है, इसलिए आप सॉर्ट किए गए सरणी को स्कैन क्यों नहीं करते हैं और ओ (एन) – smk