यह एक साक्षात्कार प्रश्न है कि मैं प्रोग्रामिंग अभ्यास के रूप में उपयोग कर रहा हूं।डुप्लीकेट के बिना दो क्रमबद्ध पूर्णांक सरणी को कैसे छेड़छाड़ करें?
इनपुट: दो क्रमबद्ध पूर्णांक सरणियों एक और बढ़ते क्रम में और एन और एम क्रमश: विभिन्न आकार के बी
आउटपुट: एक आदेश है कि है कि दोनों में प्रदर्शित तत्व शामिल हैं बढ़ाने में हल कर पूर्णांक सरणी सी ए और बी
contraints: कोई डुप्लिकेट सी में अनुमति दी जाती है
उदाहरण: इनपुट के लिए ए = {3,6,8,9} और बी = {4,5,6,9,10,11}, आउटपुट सी = {6,9}
आपके उत्तरों के लिए धन्यवाद, सभी ! संक्षेप में, इस समस्या के दो मुख्य दृष्टिकोण हैं:
मेरा मूल समाधान दो बिंदुओं को रखने के लिए, प्रत्येक सरणी के लिए एक, और बाएं से दाएं अदला-बदले में सरणी स्कैनिंग करना था, जबकि मिलान करने वाले तत्वों को चुनते समय। इसलिए जब हम एक सरणी का वर्तमान तत्व दूसरे सरणी से बड़े होते हैं, तो हम दूसरे सरणी के पॉइंटर को बढ़ाते रहते हैं जब तक कि हम या तो वर्तमान पहले सरणी तत्व नहीं पाते हैं या इसे ओवरपास नहीं करते हैं (एक बड़ा खोजें)। मैं सभी को एक अलग सरणी में मिलान करता हूं, जिसे एक बार इनपुट एरर में से किसी एक के अंत तक पहुंचने के बाद वापस किया जाता है।
एक और तरीका यह है कि हम यह कर सकते हैं कि दूसरे सरणी में एक मैच खोजने के लिए बाइनरी खोज का उपयोग करते समय, एक सरणी को रैखिक रूप से स्कैन करना है। इसका मतलब ओ (एन * लॉग (एम)) समय होगा, अगर हम ए को स्कैन करते हैं और इसके प्रत्येक एन तत्वों के लिए बी (ओ (लॉग (एम)) समय पर बाइनरी खोज करते हैं)।
मैंने दोनों दृष्टिकोण लागू किए हैं और यह देखने के लिए एक प्रयोग चलाया कि दोनों तुलना कैसे करें (इस पर विवरण here पाया जा सकता है)। बाइनरी सर्च विधि जीतने लगती है जब एम एन से लगभग 70 गुना बड़ा होता है, जब एन में 1 मिलियन तत्व होते हैं।
कृपया हमें अपने प्रश्न के बारे में बता सकते हैं? – home
इसे – Phonon
के बजाय कोड समीक्षा पर जाना चाहिए क्योंकि सिर्फ एक सरणी बड़ी है, इसका मतलब यह नहीं है कि दोनों सरणी के संयोजन का आकार समान होगा। –