결과 집합 만 저장 해야하는 방식으로 중복 정수 목록을 효율적으로 필터링하고 싶습니다.
한 가지 방법은 이것을 볼 수 있습니다.
- 우리는 정수의 범위를 가지고 있습니다 와 큰 (말 )
- 우리는 기능이있다 아마도 많은 충돌과 함께 (이미지는 )
- 우리는 다음 저장해야합니다 , 그건
나는 무엇에 대한 상당히 정확한 (확률 적) 추정을 가지고 있습니다. 따라서 데이터 구조를 미리 할당 할 수 있습니다 (예 : ).
몇 가지 아이디어가 있었지만 가장 좋은 방법은 무엇인지 잘 모르겠습니다.
- 입력 세트가 메모리에 맞지 않기 때문에 비트 세트에 문제가 없습니다.
- 해시 테이블이지만 (1) 150 %의 메모리 오버 헤드가 필요합니다. (2) 메모리 오버 헤드로 인해 추가 시간이 필요한 빌드시 테이블을 탐색해야합니다.
- "바로"정렬, 바람직하게는 복잡성 (비 비교 정렬). 그것에 대해, bucket sort 와 flashsort 의 주요 차이점이 무엇인지 잘 모르겠습니다 .
- 이진 검색 트리가있는 간단한 배열이지만 시각.
- 아마도 사용하는 블룸 필터 또는 유사한 데이터 구조는 문제의 (잘못된 반응로) 완화에 도움이 될 수 있습니다.
stackoverflow에 대한 몇 가지 질문은 이런 종류의 문제와 관련이있는 것 같습니다 ( /programming/12240997/sorting-array-in-on-run-time , /programming/3951547/java -array-finding-duplicates ), 그러나 내 요구 사항과 일치하는 것은 없습니다.