আমি ডুপ্লিকেটগুলির জন্য পূর্ণসংখ্যার একটি তালিকা এমনভাবে দক্ষতার সাথে ফিল্টার করতে চাই যাতে কেবল ফলাফলের সেটটি সঞ্চয় করা দরকার।
এটি একটি উপায় দেখা যায়:
- আমরা পূর্ণসংখ্যার একটি পরিসীমা আছে সঙ্গে বড় (বলুন) )
- আমাদের একটা ফাংশন আছে মনে হয়, অনেক সংঘর্ষের সাথে (চিত্রগুলি অভিন্নভাবে বিতরণ করা হয়) )
- আমাদের তখন স্টোর করা দরকার , এটাই
আমার কিসের একটি সঠিক (সম্ভাব্য) ধারণা রয়েছে হয়, এবং অতএব ডেটা স্ট্রাকচারগুলি আগাম বরাদ্দ করতে পারে (বলুন )।
আমার কয়েকটি ধারণা ছিল তবে আমি নিশ্চিত নই যে সর্বোত্তম পন্থাটি কী হবে:
- একটি বিটসেট প্রশ্নের বাইরে আছে কারণ ইনপুট সেট মেমরির সাথে খাপ খায় না।
- একটি হ্যাশ টেবিল, তবে (1) এর জন্য কিছুটা মেমরির ওভারহেড প্রয়োজন, এর 150% বলুন এবং (2) সারণীটি তৈরির সময় অন্বেষণ করতে হবে যা মেমরির ওভারহেডের কারণে অতিরিক্ত সময় প্রয়োজন।
- একটি "ফ্লাই অন" বাছাই করুন, পছন্দ সহকারে জটিলতা (অ তুলনা বাছাই)। সে সম্পর্কে, আমি নিশ্চিত নই যে বালতি বাছাই এবং ফ্ল্যাশসোর্টের মধ্যে প্রধান পার্থক্য কী ।
- বাইনারি অনুসন্ধান ট্রি সহ একটি সাধারণ অ্যারে, তবে এটির প্রয়োজন সময়।
- হতে পারে ব্লুম ফিল্টার বা অনুরূপ ডেটা স্ট্রাকচার ব্যবহার করে সমস্যার এক শিথিলকরণ (মিথ্যা ধনাত্মক সহ) দরকারী হতে পারে।
স্ট্যাকওভারফ্লো সম্পর্কিত কিছু প্রশ্ন এই ধরণের জিনিসগুলির সাথে মোকাবেলা করছে বলে মনে হয় ( /programming/12240997/sorting-array-in-on-run-time , /programming/3951547/java -আরে-সন্ধানী-সদৃশ ) তবে কোনওটিই আমার প্রয়োজনীয়তার সাথে মেলে না।