मैं डुप्लिकेट के लिए पूर्णांकों की एक सूची को कुशलतापूर्वक फ़िल्टर करना चाहता हूं जो केवल परिणामी सेट को संग्रहीत करने की आवश्यकता है।
इसे देखा जा सकता है:
- हमारे पास बड़े के साथ पूर्णांक एक श्रृंखला है ( )
- हमारे पास एक फ़ंक्शन माना जाता है कि , माना जाता है, कई टकराव (चित्र समान रूप से में वितरित किए गए हैं )
- हमें फिर को स्टोर करना होगा , वह है
मेरे पास काफी सटीक (संभाव्य) अनुमान है कि क्याहै, और इसलिए अग्रिम में डेटा संरचनाओं को आवंटित कर सकते हैं (कहते हैं )।
मेरे पास कुछ विचार हैं, लेकिन मुझे यकीन नहीं है कि सबसे अच्छा तरीका क्या होगा:
- एक बिटसेट प्रश्न से बाहर है क्योंकि इनपुट सेट मेमोरी में फिट नहीं होता है।
- हैश टेबल, लेकिन (1) इसके लिए कुछ मेमोरी ओवरहेड की आवश्यकता होती है, 150% का कहना हैऔर (2) तालिका का निर्माण तब किया जाना चाहिए जब मेमोरी ओवरहेड के कारण अतिरिक्त समय की आवश्यकता हो।
- ए "फ्लाई पर" सॉर्ट, अधिमानतः जटिलता (गैर-तुलना सॉर्ट) के साथ। इस बारे में, मुझे यकीन नहीं है कि बाल्टी सॉर्ट और फ्लैशसॉर्ट के बीच मुख्य अंतर क्या है ।
- द्विआधारी खोज ट्री के साथ एक सरल सरणी, लेकिन इसके लिए समय की आवश्यकता होती है।
- हो सकता है कि ब्लूम फ़िल्टर या इसी तरह की डेटा संरचना का उपयोग करने से समस्या के विश्राम (झूठी सकारात्मक) के साथ उपयोगी हो।
स्टैकओवरफ्लो पर कुछ प्रश्न इस प्रकार की चीजों से निपटने के लिए प्रतीत होते हैं ( /programming/12240997/sorting-array-in-on-run-time , https://stackoverflow.com/questions-3951547/java -रे-फाइंड-डुप्लिकेट ), लेकिन कोई भी मेरी आवश्यकताओं से मेल नहीं खाता।