Ben sadece sonuç kümesi saklanması gereken bir şekilde kopyalar için bir tamsayı listesi verimli bir şekilde filtre istiyorum.
Bunun bir yolu görülebilir:
- bir dizi tamsayı var ile büyük )
- bir fonksiyonumuz var sözde birçok çarpışma ile (görüntüler )
- o zaman depolamamız gerek , yani
Ne hakkında oldukça doğru (olasılıklı) bir tahminim var bu nedenle veri yapılarını önceden tahsis edebilir ( ).
Birkaç fikrim oldu, ama en iyi yaklaşımın ne olacağından emin değilim:
- giriş kümesi belleğe sığmadığı için bir bit kümesi söz konusu değildir.
- karma tablo, ancak (1) bellekte bir miktar ek yük gerektirir, örneğin% 150 ve (2) bellek ek yükü nedeniyle ek zaman gerektiren tablo oluşturulduğunda araştırılmalıdır.
- bir "anında" tür, tercihen ile karmaşıklık (karşılaştırma olmayan sıralama). Bununla ilgili olarak, kova sıralama ve flashsort arasındaki en büyük farkın ne olduğundan emin değilim .
- ikili arama ağacına sahip basit bir dizi, ancak bu saati.
- belki Bloom filtreleri veya benzer bir veri yapısı kullanmak problemin gevşemesinde (yanlış pozitiflerle) faydalı olabilir.
Stackoverflow ile ilgili bazı soruların bu tür şeylerle başa çıktığı görülüyor ( /programming/12240997/sorting-array-in-on-run-time , /programming/3951547/java -array-find-duplicates ), ancak hiçbiri gereksinimlerimle eşleşmiyor gibi görünüyor.