ฉันต้องการกรองรายการจำนวนเต็มอย่างมีประสิทธิภาพสำหรับรายการที่ซ้ำกันในแบบที่ต้องเก็บชุดผลลัพธ์เท่านั้น
วิธีนี้สามารถเห็นได้:
- เรามีช่วงของจำนวนเต็ม กับ ใหญ่ (พูด )
- เรามีฟังก์ชั่น มีการชนหลายครั้ง (ภาพมีการกระจายอย่างสม่ำเสมอ )
- เราต้องไปเก็บของ , นั่นคือ
ฉันมีการประมาณความแม่นยำ (ความน่าจะเป็น) ของสิ่งที่ คือและสามารถจัดสรรโครงสร้างข้อมูลล่วงหน้าได้ (พูด )
ฉันมีความคิดเล็กน้อย แต่ฉันไม่แน่ใจว่าอะไรจะเป็นวิธีที่ดีที่สุด:
- บิตเซตไม่อยู่ในคำถามเนื่องจากชุดอินพุตไม่พอดีกับหน่วยความจำ
- ตารางแฮช แต่ (1) ต้องการหน่วยความจำโอเวอร์เฮดประมาณ 150% และ (2) ตารางจะต้องถูกสำรวจเมื่อสร้างขึ้นซึ่งต้องใช้เวลาเพิ่มเติมเนื่องจากหน่วยความจำโอเวอร์เฮด
- การเรียงลำดับ "ในทันที" โดยเฉพาะอย่างยิ่งกับ ความซับซ้อน (เรียงลำดับที่ไม่เปรียบเทียบ) เกี่ยวกับการที่ผมไม่แน่ใจว่าสิ่งที่เป็นความแตกต่างที่สำคัญระหว่างการจัดเรียงถังและflashsort
- อาร์เรย์แบบง่าย ๆ ที่มีแผนภูมิการค้นหาแบบไบนารี แต่สิ่งนี้ต้องการ เวลา.
- บางทีการใช้ตัวกรอง Bloomหรือโครงสร้างข้อมูลที่คล้ายกันอาจมีประโยชน์ในการผ่อนปรน (โดยมีผลบวกเป็นเท็จ) ของปัญหา
บางคำถามใน StackOverflow ดูเหมือนจะแก้ไขปัญหาด้วยการจัดเรียงของสิ่งนี้ ( /programming/12240997/sorting-array-in-on-run-time , /programming/3951547/java - หาแบบซ้ำซ้อน ) แต่ดูเหมือนว่าจะไม่ตรงกับความต้องการของฉัน